在我的应用程序中,我有一个方法fetchJSONChild()
,如下所示:
public List<String[]> fetchJSONChild(){
final List<String> child;// = new ArrayList<String>();
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
String data1 = "1,2,3";
//String[] parts = new String[3];
child = new ArrayList<String>(Arrays.asList(data1.split(",")));
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
return child;
}
在这个方法中,我创建了一个列表并在其上放置了拆分的字符串项,但是当我返回此列表时,我在此行return child;
收到错误,如下所示:
Change method return type to List<String>
我该如何解决?
谢谢
答案 0 :(得分:1)
正如其他人所说,您必须将List<String[]>
更改为List<String>
。您无法将新ArrayList
分配给child
,因为您已将其声明为final
。除此之外,你的代码真的搞砸了,你的Thread
毫无意义。你应该做这样的事情:
// Don't use a thread in your method.
public List<String> fetchJSONChild(){
final String data1 = "1,2,3";
final List<String> child = new ArrayList<String>(Arrays.asList(data1.split(",")));
return child;
}
// Call your method in a thread elsewhere
new Thread(new Runnable() {
@Override
public void run() {
// Since the method is not static, you need a reference to an object which declares this method.
final List<String> chils = yourObject.fetchJSONChild();
// Do something with your list
}
}).start();
答案 1 :(得分:0)
变化:
public List<String[]> fetchJSONChild(){
为:
public List<String> fetchJSONChild(){
答案 2 :(得分:0)
您尝试返回ArrayList<String>
,但您的方法的返回类型为List<String[]>
。注意[
],你的方法想要返回一个字符串数组列表,这与字符串列表不同。
只需将您的退货类型更改为List<String>
:
public List<String> fetchJSONChild()
答案 3 :(得分:0)
返回类型应为List<String>
就是这样
答案 4 :(得分:0)
您已在签名中List<String[]>
定义了一个字符串数组列表。
但是您实例化的List实际上是一个字符串列表。
请注意,ArrayList
实际上并不意味着它包含数组。 (见https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html)
您可以将方法签名更改为public List<String> fetchJSONChild()
或者您必须在方法中创建字符串数组。
最好的问候
答案 5 :(得分:0)
儿童的数据类型为List<String>
。但是返回类型的函数是List<String[]>
导致类型不匹配。
将函数的返回类型更改为List<String>
(而不是List<String[]>
),它可能会有效。
答案 6 :(得分:0)
为此程序设置多线程设计毫无意义。最有可能当您修复其他人提到的编译问题时,您的方法将始终返回一个空列表。我建议不要在这种情况下进行任何多线程。