对象的 Java 检查实例,当它的对象未知时

  • 本文关键字:对象 未知 实例 Java java
  • 更新时间 :
  • 英文 :


我是Java新手,在python方面有不错的背景。我正在寻找Java中的神奇调味料,相当于python中的isinstance()。我知道我们可以做这样的事情

if (cls.isInstance(obj)){  ... }

但我什至不知道它会是哪个cls,所以我需要一些东西来告诉我obj是什么实例。我无法检查数百个类。提前谢谢你。

编辑:

我正在处理一些异常,该异常包含在其他几个自定义异常中。我的主要目标是捕获我需要知道它是什么实例的异常。

异常也有继承。这意味着您不必知道它的确切类别即可捕获它。

因此,如果您想捕获每个异常,请这样做

try {
     // the code that throws the exception
} catch (Exception e) {
     // handling the exception
}

如果你真的很不满意,你可以用Throwable替换上面的Exception,以捕捉更多的东西,但在大多数情况下,这将是一个坏主意。

你可以在java中通过instanceof关键字来检查类实例。它返回真或假。

MyClass obj = new MyClass();
if(obj instanceof MyClass) {
   //Do what you want
}

如果你想检查异常是哪个异常,那么在java中,每个异常都是Exception类的子级。 您将检查可能包装异常的任意数量的类。 最后,您将捕获Exception类型。现在每个异常都将被捕获。

try{
} catch(CustommException1 e) {
} catch(CustomException2 e) {
} catch(Exception e) {
}

您可以使用

obj.getClass().getName()

如果您不喜欢包名称,也可以这样做

obj.getClass().getSimpleName()

尝试运算符的实例...例如:

`   class Simple1{  
         public static void main(String args[]){  
         Simple1 s=new Simple1();  
         System.out.println(s instanceof Simple1);//true  
     }  
  }  `
无法

通过在Object中使用instanceof.getClass()来获取特定的自定义类。它会给你一种LinkedHashMap

要知道Object的具体实例,唯一的方法是检查它的Keys,或者尝试投射它。

没有一个"神奇的调味料"可以让你什么类型的自定义类Object

相关内容

  • 没有找到相关文章

最新更新