回答
只是一个猜测,但我认为它有事情做与m
是一个接口引用。如果将其更改为ArrayList m = new ArrayList();
,则会显示编译时错误。
我认为类型必须相关。
Number是一个类(抽象),List是一个接口,所以它们可以通过另一个类相关联。
所以在技术上你可以有
class Foo extends Number implements List
{
...
}
和
Number k = ... ; //
List m = new Foo();
m = (List) k;
可能是合法的,并没有异常,如果k被指向与Foo
兼容的类型将运行。
因此,如果您通过接口引用对象,则解析会延迟到运行时。
这很有道理。 – 2011-04-05 02:27:11
它应该是'class MyFooImpl扩展MyFoo {}'而不是'class MyFooImpl {}'吗?无论如何,所有编译时错误都是赋值给类类型引用的地方。 – 2011-04-05 16:53:41
我发现了与C#一起工作的类似行为。 – 2011-04-05 16:56:11
- 1. 在Java中铸造参考变量
- 2. 带超类的java铸造参考
- 3. 明确铸造问题
- 4. 静态铸造至(派生类参考)
- 5. 不正确的值从运算符铸造参考
- 6. 铸造在Java
- 7. 参考Java中构造
- 8. 在Java中的类型铸造/铸造
- 9. 铸造输入参数正确类型
- 10. 铸造到java中的通用参数
- 11. Java - 铸造产生的对象是否具有与铸造对象相同的参考值?
- 12. Java变量铸造
- 13. Java铸造阵列
- 14. Java通用铸造
- 15. Java铸造(动态)
- 16. Android Java类铸造
- 17. Java铸造转换?
- 18. 在Java中铸造
- 19. Java类型铸造
- 20. 爪哇构造:参考MyCalendarItem是不明确的
- 21. 确定对象的铸造
- 22. 铸造vs参数传递
- 23. 铸造和参数警告
- 24. 铸造发件人参数
- 25. Java多态性铸造
- 26. 铸造的Java规则
- 27. 在JAVA中铸造问题
- 28. Java泛型自动铸造
- 29. 铸造超类的Java
- 30. Java的铸造接口类
您的Number类是否来自java.lang包? – secmask 2011-04-05 03:33:02