在下面的示例中(来自我的coursepack),我们希望为Square实例c1提供一些其他对象的引用p1,但前提是这两个对象是兼容的类型.
if (p1 instanceof Square) {c1 = (Square) p1;}
Run Code Online (Sandbox Code Playgroud)
我在这里不明白的是,我们首先检查p1确实是一个Square,然后我们仍然施展它.如果是Square,为什么演员?
我怀疑答案在于明显和实际类型之间的区别,但我仍然感到困惑......
编辑:
编译器将如何处理:
if (p1 instanceof Square) {c1 = p1;}
Run Code Online (Sandbox Code Playgroud)
Edit2:
问题是instanceof检查实际类型而不是表观类型?然后演员改变了表观类型?
谢谢,
JDelage