Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的协方差_Java_Covariance - Fatal编程技术网

Java中的协方差

Java中的协方差,java,covariance,Java,Covariance,为什么以下内容在Java中不起作用?它将在C中工作: public static final List<String> Split(String str, char delimiter) { if ((str == null) || "".equals(str)) { return new CopyOnWriteArrayList<String>(); } } 我得到一个错误,说这个

为什么以下内容在Java中不起作用?它将在C中工作:

public static final List<String> Split(String str, char delimiter)
    {
        if ((str == null) || "".equals(str))
        {
            return new CopyOnWriteArrayList<String>();
        }
    }

我得到一个错误,说这个方法必须返回列表。CopyOnWriteArrayList实现列表接口。为什么协方差不应用于Java中的返回值?

看起来您忘记了为else分支返回列表。

看起来您忘记了为else分支返回列表。

您或者显式地拥有一个else分支,然后返回您想要返回null的任何内容?。或者在方法的末尾有一个return语句。如果没有任何一个分支,程序将不会编译。

或者显式地有一个else分支,并返回任何想要返回null的内容?。或者在方法的末尾有一个return语句。如果没有这两个选项,您的程序将无法编译。

除了上面的正确答案外:

在Java split中使用小写方法名,而不是split 当字符串为空时,为什么返回像CopyOnWriteArrayList这样重的对象?在这种情况下,您希望返回Collections.emptyList,在这种情况下,如果您以后不打算向列表中添加值,则不会不必要地创建新对象 实际上,我会使用apache commons lang并这样做:

return Arrays.asList(
    StringUtils.stripToEmpty(myString) // converts null into ""
                                 // and strips extra whitespace
        .split(
             Pattern.quote(Character.toString(delimiter))
        )
)

如果需要,则不需要。

除了上面的正确答案外:

在Java split中使用小写方法名,而不是split 当字符串为空时,为什么返回像CopyOnWriteArrayList这样重的对象?在这种情况下,您希望返回Collections.emptyList,在这种情况下,如果您以后不打算向列表中添加值,则不会不必要地创建新对象 实际上,我会使用apache commons lang并这样做:

return Arrays.asList(
    StringUtils.stripToEmpty(myString) // converts null into ""
                                 // and strips extra whitespace
        .split(
             Pattern.quote(Character.toString(delimiter))
        )
)

如果需要,则不需要。

正确!!。。。编译器错误…哈哈…eclipse中的红线太多了!这是正确的。我以为它告诉我我不能把CopyOnWriteArrayList作为一个列表返回。我很难过,我不像以前那样有鹰眼了。我应该马上看到的。。。我需要停止对IDE的依赖。对吧!!。。。编译器错误…哈哈…eclipse中的红线太多了!这是正确的。我以为它告诉我我不能把CopyOnWriteArrayList作为一个列表返回。我很难过,我不像以前那样有鹰眼了。我应该马上看到的。。。我需要停止如此依赖我的IDE。这在C中真的有效吗?如果str不是空的,返回什么?这在C中真的有效吗?如果str不为空,将返回什么?