sna*_*ile 83 java reflection instanceof
我想检查对象o是否是类的实例C或子类的实例C.
举例来说,如果p是类的Point我想x.instanceOf(Point.class)是true也x.instanceOf(Object.class)为true.
我希望它也适用于盒装原始类型.例如,如果x是,Integer那么x.instanceOf(Integer.class)应该是true.
有这样的事吗?如果没有,我该如何实现这样的方法?
gus*_*afc 163
Class.isInstance做你想要的.
if (Point.class.isInstance(someObj)){
...
}
Run Code Online (Sandbox Code Playgroud)
当然,如果您可以使用它,则不应该使用它instanceof,但对于反射场景,它通常会派上用场.
Mic*_*rdt 20
我想检查对象o是c类的实例还是c的子类的实例.例如,如果p是Point类,我想要x.instanceOf(Point.class)
嗯什么?什么是o,p和x?
我希望它也适用于原始类型.例如,如果x是整数,则x.instanceOf(Integer.class)和x.instanceOf(Object.class)应为true.
不,它甚至不应该编译.基元不是对象,您不能在它们上调用方法.
无论如何,有三件事,其中一件绝对可以实现你想要的东西(它们在确切的适用范围有所不同:
instanceof运营商如果你知道在编译时的类.x instanceof Integer
x instanceof Object
Run Code Online (Sandbox Code Playgroud)
你只需要使用正确的语法
对于原始类型,你必须完全不同.由于无法为它们创建方法,因此需要一个保留方法的类.因此,而不是"x.instanceOf(Integer.Class)",你必须调用"MyClassComparer.instanceOf(x,Integer.Class)"或类似的东西.这可以通过重载方法轻松实现,但我没有看到这种功能完全可取的情况.
事实上,在Java中有一个名为instanceof的布尔运算符,它可以用来确定一个对象是类的实例、子类的实例还是实现特定接口的类的实例。
if(obj instanceof SomeClass) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
Java 教程有一个关于这个运算符的很好的例子
| 归档时间: |
|
| 查看次数: |
79381 次 |
| 最近记录: |