相关疑难解决方法(0)

为什么在一个instanceOf后施放?

在下面的示例中(来自我的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

java polymorphism instanceof

23
推荐指数
6
解决办法
2万
查看次数

标签 统计

instanceof ×1

java ×1

polymorphism ×1