当前位置: 首页 > 面试题库 >

比较Java中的类类型

闾丘炫明
2023-03-14
问题内容

我想比较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提供了不同类型的信息。

如何比较两个类类型,而不必创建另一个伪对象来比较类类型?


问题答案:

试试这个:

MyObject obj = new MyObject();
if(obj instanceof MyObject){System.out.println("true");} //true

由于继承,这对接口也有效:

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



 类似资料:
  • 问题内容: 在Java中,我编写了一个Binary Search Tree类,该类使用递归添加节点。现在,我想使用泛型对其进行概括,以便我可以了解更多有关它们的信息。 我添加节点的功能在以下类中 主类具有以下代码来开始工作。我正在使用字符串,但是数据类型可能是一些复杂的类型。 我开始使用Comparable接口,但是如何编写CompareTo()函数?我不知道T是什么类型的?我得到的错误是“运算符

  • 问题内容: 为什么下面的代码即使 long3 == long2* 比较也返回 false ,即使它是文字。 * 问题答案: 是一个对象,而不是原始对象。通过使用您正在比较 参考值 。 您需要做: 正如您在第二次比较中所做的那样。 编辑: 我明白了…您正在考虑其他对象的行为就像文字。他们不*。即使如此,你永远要使用有任何文字。 (* Autobox类型确实实现了flyweight模式,但仅适用于-1

  • 主要内容:实例,实例虽然 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。 松散比较:使用两个等号 == 比较,只比较值,不比较类型。 严格比较:用三个等号 === 比较,除了比较值,也比较类型。 例如,"42" 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 "FALSE" 是一个字符串。 实例 <?php if(42 == "42

  • 问题内容: 我想确定Java中的某些内容:如果我有一个Character,Integer或Long以及类似的东西,我应该使用equals还是==足够? 我知道使用字符串不能保证每个唯一字符串只有一个实例,但是我不确定其他盒装类型。 我的直觉是使用equals,但我想确保自己没有浪费性能。 问题答案: 编辑:规范为装箱转换提供了 一些 保证。从5.1.7节开始: 如果装箱的值p为true,false

  • 问题内容: 我必须将对象与预定义类的列表进行比较。 使用安全还是应该使用? 注意: 我不能使用,我没有对象,我只有对象。在这种情况下,我会像枚举一样使用它! 问题答案: 不会覆盖来自的方法,该方法是这样实现的: 因此与(除非为null)相同。

  • 问题内容: 我需要编写一个比较器,它采用类型A的对象A和类型B的对象B。这两个对象不是公共对象的扩展。它们的确不同,但是我需要通过其中的通用字段来比较这两个对象。我必须使用比较器接口,因为对象存储在Set中,并且在必须对CollectionUtils执行操作之后。我在Google上搜索了一下,发现了Comparator的解决方案,但只有相同的类型。 我试图朝这个方向实施思考,但是我不知道我是否在正