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

如何在java中识别对象类型

姬存
2023-03-14
问题内容

我有以下示例未完成方法来比较给定对象的对象类型

public void test(Object value) {

        if (value.getClass() == Integer) {
            System.out.println("This is an Integer");
        }else if(value.getClass() == String){
            System.out.println("This is a String");
        }else if(value.getClass() == Float){
            System.out.println("This is a Float");
        }

}

该方法可以称为:

test("Test");
test(12);
test(10.5f);

此方法实际上不起作用,请帮助我使其起作用


问题答案:

您忘记了.class

if (value.getClass() == Integer.class) {
    System.out.println("This is an Integer");
} 
else if (value.getClass() == String.class) {
    System.out.println("This is a String");
}
else if (value.getClass() == Float.class) {
    System.out.println("This is a Float");
}

请注意,此类代码通常是不良OO设计的标志。

还要注意,将对象的类与类进行比较,并使用instanceof是不一样的。例如:

"foo".getClass() == Object.class

是假的,而

"foo" instanceof Object

是真的。

是否必须使用一个或另一个取决于您的要求。



 类似资料:
  • 问题内容: 在我的代码中,我正在创建一个对象集合,各个线程将以一种仅在对象是不可变的情况下才安全的方式访问这些对象。当试图将一个新对象插入到我的集合中时,我想测试一下它是否是不可变的(如果不是,我将抛出一个异常)。 我可以做的一件事是检查一些众所周知的不可变类型: 这实际上使我省了90%的路,但是有时我的用户会想要创建自己的简单不可变类型: 是否有某种方式(也许使用反射)可以可靠地检测到类是否不可

  • 如何在java脚本中识别/检测循环对象类型? 圆形对象的示例: 如果我们尝试使用JSON字符串化循环对象。stringify(obj),它将抛出一个错误,如下所示 在JSON. stringify()将循环结构转换为JSON

  • 默认情况下,在前端也具有QuestionResponseBodyDTO类型。ActivityListResponseDTO也在前端扩展了这一点,因此它应该可以工作。但是由于某些原因,程序没有在内部if语句中运行,并且从未被记录。 是不是我做错了什么?

  • 问题内容: 如何可靠地确定一个对象是否具有numpy类型? 我意识到这个问题与鸭子类型的哲学背道而驰,但是我们的想法是确保一个函数(使用scipy和numpy)永远不会返回一个numpy类型,除非使用numpy类型进行调用。 这是在另一个问题的解决方案中提出的,但是我认为确定对象是否具有numpy类型的一般问题与应将其分开的原始问题相距甚远。 问题答案: 使用内置函数获取类型,然后可以使用该属性找

  • 在面向对象中,类和对象是最基本、最重要的组成单元。类实际上是表示一个客观世界某类群体的一些基本特征抽象。对象就是表示一个个具体的东西。所以说 类是对象的抽象,对象是类的具体。 让我们来看看人类所具有的一些特征,这些特征包括属性(一些参数、数值)以及方法(一些行为,他能干什么)。 每个人都有身高、体重、年龄、血型等属性,人会劳动、会直立行走、会用自己的头脑去创造工具等方法。人之所以能区别于其他类型的

  • 下面的班级是我的主要班级。我的arraylist是“Employee”类型,并且该arraylist包含多个对象的许多元素(多态性)。所以我想知道,当用户输入一个类名时,我应该从ArrayList中打印出那个特定类的employees。例如,当用户输入“Surgeon”时,程序应该能够从ArrayList中打印出所有Surgeon雇员的。请帮忙,提前谢谢。