作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个线程,当当前应用程序关闭时,必须启动另一个类的 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/
我是一名优秀的程序员,十分优秀!