use*_*791 3 java arrays casting interface
为什么Java中可以使用以下内容?
Integer[] ints = (Integer[])new Comparable[10];
Run Code Online (Sandbox Code Playgroud)
但它ClassCastException在运行时获得.new接口数组的用例是什么?
回答具体问题:
Comparable toComplare[] = new Comparable[10];
Run Code Online (Sandbox Code Playgroud)
为什么不创建一个允许您存储实现Comparable接口的任何对象的数组?!
关键是:界面表示"通用功能" - 仅从 "视图"中查看对象可能会有所帮助.
当然,存储在该数组中的对象总是具有某种"真实"类 - 但所有这些对象都将实现Comparable接口提供的功能.
所以你可以这样做:
toCompare[0] = new Integer(5);
toCompare[1] = new BigDecimal("3.2");
...
Run Code Online (Sandbox Code Playgroud)
我并不是说这是你经常使用的东西,但正如所说 - 它允许你在他们能力的某个特定"视图"下"收集"对象.这也是值得指出的是:具有这样一种阵列就不是意味着你将能够做到:
toCompare[0].compareTo(toCompare[1]);
Run Code Online (Sandbox Code Playgroud)
成功!
除此之外:演员总是暗示你,程序员知道编译器不知道的东西.所以编译器退后一步,让你这样做 - 假设你知道你在做什么.但是,由于你在问题中显示的代码显然不正确,现实会在运行时咬你.是的,可以在编译时确定给定的代码是不正确的.
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |