Comparing Class Types in Java(比较 Java 中的类类型)
问题描述
我想比较一下Java中的类类型.
I want to compare the class type in Java.
我认为我可以这样做:
class MyObject_1 {}
class MyObject_2 extends MyObject_1 {}
public boolean function(MyObject_1 obj) {
if(obj.getClass() == MyObject_2.class) System.out.println("true");
}
我想比较一下传递给函数的 obj 是否是从 MyObject_1 扩展的.但这不起作用.似乎 getClass() 方法和 .class 提供了不同类型的信息.
I wanted to compare in case if the obj passed into the function was extended from MyObject_1 or not. But this doesn't work. It seems like the getClass() method and the .class gives different type of information.
如何比较两个类类型,而不必创建另一个虚拟对象来比较类类型?
How can I compare two class type, without having to create another dummy object just to compare the class type?
推荐答案
试试这个:
MyObject obj = new MyObject();
if(obj instanceof MyObject){System.out.println("true");} //true
由于继承,这对接口也有效:
Because of inheritance this is valid for interfaces, too:
class Animal {}
class Dog extends Animal {}
Dog obj = new Dog();
Animal animal = new Dog();
if(obj instanceof Animal){System.out.println("true");} //true
if(animal instanceof Animal){System.out.println("true");} //true
if(animal instanceof Dog){System.out.println("true");} //true
关于 instanceof 的进一步阅读:http://mindprod.com/jgloss/instanceof.html
For further reading on instanceof: http://mindprod.com/jgloss/instanceof.html
这篇关于比较 Java 中的类类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:比较 Java 中的类类型
基础教程推荐
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01