为什么没有编译器错误将数字转换为List?我认为类型必须是相关的.
Number k = 10;
List m = new ArrayList();
m = (List)k;
Run Code Online (Sandbox Code Playgroud)
只是猜测,但我认为它与m作为界面参考有关.如果将其更改为ArrayList m = new ArrayList();,则显示编译时错误.
我认为类型必须是相关的.
Number是一个类(抽象),List是一个接口,因此它们可以通过另一个类相关联.
所以技术上你可以
class Foo extends Number implements List
{
...
}
Run Code Online (Sandbox Code Playgroud)
和
Number k = ... ; //
List m = new Foo();
m = (List) k;
Run Code Online (Sandbox Code Playgroud)
如果k指向兼容的类型,则可能是合法的并且将毫无例外地运行Foo.
因此,如果您通过接口引用对象,则解析将延迟到运行时.
| 归档时间: |
|
| 查看次数: |
528 次 |
| 最近记录: |