检查对象是字符串、哈希映射还是哈希映射的实例[ ]

2022-09-03 08:53:35

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

如果不是,因为上述方法似乎有悖常理,有没有办法将其转换为每个对象,并测试有关新转换对象的某些内容,以查看它是否实际上是它被投射到的对象类型?


答案 1

是的:

 if(obj instanceof String)
 {
     String str = (String) obj;
     .
     .
     .
 }

顺便说一句,澄清一下:

[...]测试有关新投射对象的一些内容,以查看它是否实际上是它被投射到的对象类型?

不能将某些内容强制转换为无效类型。如果 具有 类型,则 将导致 在运行时引发 。objString((Integer)obj)ClassCastException


答案 2

您正在寻找运算符的实例

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

示例:将返回,而将返回 。"Hello" instanceof Stringtruenew Integer(5) instanceof Stringfalse