将方法返回类型更改为List <string> java </string>

时间:2014-11-26 08:22:11

标签: java android

在我的应用程序中,我有一个方法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>

我该如何解决?

谢谢

7 个答案:

答案 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)

为此程序设置多线程设计毫无意义。最有可能当您修复其他人提到的编译问题时,您的方法将始终返回一个空列表。我建议不要在这种情况下进行任何多线程。