我需要将两个字符串传递给一个线程,该线程将返回包含这两个字符串的数组,并且我必须使用callable函数。
以下是我目前的代码:
public class toArray implements Callable<String[]> {
private String string1 string2;
public toArray (String first, String second)
{
string1= first;
string2 = second;
}
@Override
public String[] call() throws Exception {
String [] allStrings = null;
allStrings[0] = string1;
allStrings[1] = string2;
return allStrings;
}
}
以下是主要内容:
public class theFuntion{
public static void main(String[] args) {
FutureTask<String[]> task = new FutureTask (new MyCallable());
ExecutorService es = Executors.newSingleThreadExecutor();
es.submit (task);
try{
String[] result = task.get();
System.out.println(result[1] + result[2]);
}
catch(Exception e){
System.err.println(e);
}
es.shutdown();
}
问题出在
main
函数中:它说期望一个String[]类型的结果,但是实际上得到的是一个对象。如果我强制转换结果,它会提示必须声明抛出异常。
String[]
,尽管您仍然试图这样做。 - MakotoallStrings
被初始化为null
,然后被重复使用。你可能想要的是String [] allStrings = new String[2]
。 - VicToArray
而不是toArray
。 - biziclop