gpt4 book ai didi

java - 如何在另一个类中调用一个类的main方法?

转载 作者:行者123 更新时间:2023-12-01 15:10:34 25 4
gpt4 key购买 nike

我有一个线程,当当前应用程序关闭时,必须启动另一个类的 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[])如果您将所需类型的数组作为参数传递,则调用会返回该类型的数组。如果传递的参数长度正确,则直接使用;否则将分配一个新数组。因此,首先分配正确的长度将避免一路分配。

关于java - 如何在另一个类中调用一个类的main方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12412353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com