【发布时间】:2019-08-29 06:01:45
【问题描述】:
假设我有两个类:
public Class1 {
/* class body*/
}
public Class2 extends Class1 {
public Class2 (int var1, int var2) {
super(var11, var2);
}
}
现在我需要确定我拥有哪个类对象。在这种情况下,如何确定我是否拥有 Class1 或 Class2 对象?
Object var1 = new Class1(1,2);
Object var2 = new Class2(1,2);
var2 instanceof Class2; /*true*/
var2 instanceof Class1 /*true*/
在这两种情况下,instanceof 都会返回 true。
【问题讨论】:
-
使用 getClass();返回您需要的类型
-
someObject.getClass() 返回对象的类。但是请注意,您几乎不必这样做。使用多态性。
-
另请注意,如果对象不是 Class2 的实例,则 someObject instanceof Class2 肯定不会返回 true。
-
@user1209216 “非直接实例”是什么意思?否决票很可能是由于自己很少努力找到解决方案。不过不确定,因为我没有投反对票
-
这是XY Problem。告诉我们您真正需要什么,而不是您似乎不确定的模糊问题。
标签: java inheritance instanceof