java - 强制转换会影响instanceof操作的结果吗?

标签 java object instanceof

我很困惑。

假设我们有以下类(class):

class Shape { /* ... */ }
class Square extends Shape { /* ... */ }

生成的 boolean 值是什么,为什么会这样?

Shape shape = ...;
boolean b1 = shape instanceof Square;

Square square = ...;
boolean b2 = ((Shape) square) instanceof Square;

boolean b3 = shape instanceof Object;

据我所知,子类是父类的实例,但反之则不然?

最佳答案

在此代码中:

Number n = new Integer(42);

Numbern表观类型,而 Integer 是其真实类型 em>.

强制转换会更改表观类型,而instanceof会检查真实类型

因此,转换对 instanceof 结果没有影响。

关于java - 强制转换会影响instanceof操作的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41892132/

相关文章:

java - C++中的结果类型和重新定义

javascript - 当我不知道属性名称时,如何从 javascript 对象获取值

java - 如何将 Jsoup 输出存储在 ArrayList 中?

java:使用变量的值作为对象名称(不是 eval() 方式)

java - 创建一个类,开始使用OOP。 java程序不显示任何内容?

java - 将测试文件中的现有字符串与带有参数的新输入者对象进行比较时,始终返回 false

java - 如何将变量参数传递给instanceof?

Java:为什么我的列表包含不同的类型? (过滤列表)

Java - instanceof 与运行时泛型类的转换 :

Javafx tableview 将 cellValueFactory 内的更改绑定(bind)到表 observablelist