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

有没有办法确定Java实例的类是什么类型?

郭俊拔
2023-03-14
问题内容

说我有3个这样的课程:

class A {}
class B extends A {}
class C extends A {}

难道那么有可能确定一个特定的对象是否是他的一个实例ABC

我认为这样的事情可能会起作用:

if (myObject.getClass().isInstance(B.class)) {
    // do something for B
} else (myObject.getClass().isInstance(C.class)) {
    // do something for C
} else {
    // do something for A
}

但是经过一点阅读之后,我认为它始终会被评为B,因为它只是测试强制转换是否有效,并且两者之间没有实质性差异。


问题答案:

做这个:

if (myObject instanceof B) {
    // do something for B
} else (myObject instanceof C) {
    // do something for C
} else {
    // do something for A
}


 类似资料:
  • 我试图在java中使用Hibernate和TypedQuery。 我试图调用的方法有一个签名 我想像bellow一样调用它,但是用一个真实的实例替换null。 上面的代码经过编译,但显然带有空指针异常。 如果我对擦除的理解是正确的,那么只要我得到类对象的一个实例,这就行了,因为所有泛型类型信息在运行时都会丢失。 是否有任何方法,我可以得到一个类的实例,我可以分配给变量cls,使这个代码将工作?

  • 我的应用程序需要确定设备是否具有谷歌提供的最新操作系统软件。 例如,目前,我需要能够确定设备是否正在运行Marshmallow,而不管手机可能永远无法安装Marshmallow的事实。 这是否需要硬编码到应用程序中? 谢啦

  • 问题内容: 假设我有以下情况: 有没有一种方法可以保证实现的任何类也必须扩展?我不想创建一个抽象类,因为我希望能够以类似的方式混合其他一些接口。 例如: 问题答案: Java接口无法扩展类,这很有意义,因为类包含无法在接口内指定的实现细节。 解决此问题的正确方法是通过将接口也完全从实现中分离出来。所述等可以扩展接口以迫使程序员来实现相应的方法。如果要在所有实例之间共享代码,则可以将(可能是抽象的)

  • 问题内容: 我一直在寻找一个问题:从其字符串名称实例化一个类,该字符串名称描述了如何在具有名称时实例化一个类。有没有办法用Java做到这一点?我将拥有包名称和类名称,并且我需要能够创建具有该特定名称的对象。 问题答案: 两种方式: 方法1-仅适用于具有无参数构造函数的类 如果你的类具有无参数构造函数,则可以使用并使用该方法创建一个实例(尽管请注意,此方法通常被认为是有害的,因为它可以击败Java的

  • 问题内容: 首先,我阅读了埃里克森对“为什么不能在Java接口中定义静态方法?”的有用答复。。这个问题不是关于“为什么”的问题,而是关于“然后如何做”的问题。 编辑:我的原始示例不适当地,但我将其保留在下面。 虽然我现在确信在大多数情况下我想做的是过度矫kill过正,但在一种情况下可能需要这样做: 我再举一个例子。现在,让我们采用一个适合于查找表的复杂功能,例如Bessel函数。这必须进行初始化,

  • “任务”类实例需要包含有关其先决任务的信息。