回答
只是一个猜测,但我认为它有事情做与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. 更改使用dynamic_cast铸造参考相比铸造指针
- 5. 铸造在.NET参考源到对象
- 6. 铸造参考vs使用新(ArrayList)
- 7. 静态铸造至(派生类参考)
- 8. 铸造泛型然后使用参考
- 9. 不正确的值从运算符铸造参考
- 10. 多态性和明确铸造
- 11. 在openCL中的明确铸造
- 12. 铸造在Java
- 13. 参考Java中构造
- 14. 在Java中的类型铸造/铸造
- 15. Java的铸造和C++的铸造
- 16. 铸造输入参数正确类型
- 17. 铸造到java中的通用参数
- 18. Java - 铸造产生的对象是否具有与铸造对象相同的参考值?
- 19. Java通用铸造
- 20. Java铸造对象
- 21. 在Java中铸造
- 22. java - 铸造泛型
- 23. Android Java类铸造
- 24. Java变量铸造
- 25. Java铸造转换?
- 26. Java铸造阵列
- 27. Java对象铸造
- 28. Java - 铸造一套
- 29. Java铸造(动态)
- 30. Java类型铸造
您的Number类是否来自java.lang包? – secmask 2011-04-05 03:33:02