我是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
。