[英]How do I make a loop inside a method in one class to call on another method in another class n Java?
[英]How do I call main method of one class inside another class?
我有一个线程,当当前应用程序关闭时,必须启动另一个类的main()
方法。
我在线程的run()
中包含ClassName.main(someStringArray)
,但未调用该方法。 可能出了什么问题?
我定义的线程 :
private class VideoCreator extends Thread{
public VideoCreator(){
pathToPass = savePath + "/" + "video.mov";
passVect.add("-w");
passVect.add("1280");
passVect.add("-h");
passVect.add("800");
passVect.add("-f");
passVect.add("25");
passVect.add("-o");
passVect.add(pathToPass);
}
@Override
public void run(){
try{
jpegFiles = Files.newDirectoryStream(Paths.get(pathToPass).getParent(),"*.jpg");
for(Path jpegFile : jpegFiles){
passVect.add(jpegFile.toString());
}
}catch(IOException e){
}
try{
JpegImagesToMovie.main((String[])passVect.toArray());
}catch(Exception e){
System.out.println("Dammit Error!");
e.printStackTrace();
}
}
public void cleanUp(){
}
String pathToPass;
Vector<String> passVect = new Vector<>(100,200);
DirectoryStream<Path> jpegFiles;
}
代替
(String[])passVect.toArray()
你应该写
passVect.toArray(new String[passVect.size()])
或(性能稍差但表现较差)
passVect.toArray(new String[0])
原因是toArray()
将始终返回Object[]
数组,即使其所有成员都是字符串,也无法将其转换为String[]
数组。 (顺便说一句,可能是相反的:您可以在需要Object[]
地方传递String[]
,该位置可被Arrays
类的各种方法使用。实际上,从toArray()
方法返回的东西可能具有是String[]
,即使不是在符合标准的实现中也是如此,这就是编译器没有抱怨的原因:它不知道或不在乎方法的内部,并从返回类型判断,如果这样创建数组,则可能会显式转换为子类的数组。)
如果将该类型的数组作为参数传递,则toArray(T[])
调用将返回所需类型的数组。 如果传递的参数长度正确,将直接使用; 否则将分配一个新的数组。 因此,首先分配正确的长度将避免沿途进行一次分配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.