Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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数组与Scala数组_Java_Arrays_Scala - Fatal编程技术网

Java数组与Scala数组

Java数组与Scala数组,java,arrays,scala,Java,Arrays,Scala,Java数组和Scala数组之间的一个区别是Java数组是协变量。Scala数组不可用。两者都是可变的。在java中,排序方法可以采用不同的数组,例如字符串或Int数组。这经常被引用为Liskov替换原理的一个好例子。对我来说似乎是个好设计?在Scala中,我们知道数组不是协变量。尽管Scala阵列的设计比Java晚。我看不出Scala数组在协方差方面有多好。它有泛型,也许这比Java好 进一步看,您会发现Java语言的创始人后来决定让泛型不协变。这是有充分理由的 因为一个列表。如果Java数组

Java数组和Scala数组之间的一个区别是Java数组是协变量。Scala数组不可用。两者都是可变的。在java中,排序方法可以采用不同的数组,例如字符串或Int数组。这经常被引用为Liskov替换原理的一个好例子。对我来说似乎是个好设计?在Scala中,我们知道数组不是协变量。尽管Scala阵列的设计比Java晚。我看不出Scala数组在协方差方面有多好。它有泛型,也许这比Java好

进一步看,您会发现Java语言的创始人后来决定让泛型不协变。这是有充分理由的


因为一个
列表。如果Java数组不是协变的,那就没有必要了

如果我理解正确,您似乎已经回答了自己的问题…Scala enrichments
Array(1,2,3)。查找(==2)
,但同样值得注意的是,Scala泛型在默认情况下是不变的,但如果需要,可以声明为协变或逆变的-例如,
Scala.collection.Iterrable
是协变的(Scala集合通常是协变的-我不知道除了数组之外是否还有异常?)。编译器检查了协变的安全性。问题是问java数组,但你的例子是列表。让我们退一步:你问“协变数组有什么问题”。我向你解释了协变数组的实际问题“集合”有。换句话说:“看,列表在这里没有这个问题X”。你真的需要我告诉你吗?这意味着数组很可能有这个问题X"?!再加上@Cyäegha的评论,你真的得到了你需要的所有信息!但是,看起来是这样的;因此我更新了我的答案。冷静点。兄弟。我不是说你的答案错了。只是说你的示例可以使用数组而不是列表。在Java中泛型是不变的。这会说明不同的观点。对不起,我不想过来太粗鲁了。我只是对你的评论有点惊讶。谢谢你的接受!
List<Apple> apples = new ArrayList<>();
List<Fruit> fruits = apples;
fruits.add(new Banana());
Apple badApple = apples.get(0);