gpt4 book ai didi

java - 为什么可以新建一个接口(interface)数组

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:11 26 4
gpt4 key购买 nike

为什么在 Java 中可以实现以下内容?

Integer[] ints = (Integer[])new Comparable[10];

但它在运行时得到 ClassCastException新建接口(interface)数组的用例是什么。

最佳答案

回答具体问题:

Comparable toComplare[] = new Comparable[10];

为什么不创建一个数组来存储任何实现 Comparable 接口(interface)的对象?!

要点是:接口(interface)表示“通用功能”——它可能有助于从“看法”。

当然,存储在该数组中的对象始终属于某个“真实”类 - 但所有这些对象都将实现 Comparable 接口(interface)提供的功能。

所以你可以这样做:

toCompare[0] = new Integer(5);
toCompare[1] = new BigDecimal("3.2");
...

我并不是说这是您会经常使用的东西,但如前所述 - 它允许您在对象功能的特定、特定“ View ”下“收集”对象。还值得指出的是:拥有这样的数组意味着您可以:

toCompare[0].compareTo(toCompare[1]);

成功了!

除此之外:cast 总是以某种方式暗示你,程序员知道一些编译器不知道的事情。所以编译器退后一步,让你这样做——假设你知道自己在做什么。但是由于您在问题中显示的代码显然正确,因此现实会在运行时反咬您一口。是的,可以在编译时确定给定的代码不正确。

关于java - 为什么可以新建一个接口(interface)数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45610915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com