比较 Java 中的类类型 [英] Comparing Class Types in Java

查看:19
本文介绍了比较 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 中的类类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆