检查Object是否是String,HashMap或HashMap []的实例

12 java types casting

我在java中有一个Object.有没有办法在将对象实际投射到这些对象之前检查对象是否是String,HashMap或HashMap []的实例?

如果没有,因为上述方法似乎违反直觉,是否有办法将其投射到每个对象中,并测试一些关于新铸造的对象,看看它实际上是否是它所铸造的对象的类型?

rua*_*akh 32

是:

 if(obj instanceof String)
 {
     String str = (String) obj;
     .
     .
     .
 }
Run Code Online (Sandbox Code Playgroud)

顺便说一句,澄清一下:

[...]测试一些关于新铸造物体的东西,看看它实际上是否是它所铸造的物体的类型?

无法将某些内容转换为无效类型.如果obj有类型String,那么((Integer)obj)将导致ClassCastException在运行时引发.

  • 需要注意的一件事是,当 obj 为 null 时,`instanceof` 返回 false (2认同)
  • 这意味着它具有类型`Object []`.您可以使用`System.out.println(java.util.Arrays.toString((Object [])____))`,其中`____`是变量名,以打印出数组的元素. (2认同)

Jef*_*rey 8

您正在寻找instanceof运营商.

instanceof运算符将对象与指定的类型进行比较.您可以使用它来测试对象是否是类的实例,子类的实例或实现特定接口的类的实例.

示例:"Hello" instanceof String将返回truenew Integer(5) instanceof String返回false.