在C#中,为了避免类转换异常,我会这样做:
事物= createThing();
动物动物=动物的东西;
if(animal!= null){
//do something
}
我想在Java中进行运行时检查,如果我不必,我强烈不想抛出ClassCastException。 Java中适合的策略是什么?
答案 0 :(得分:1)
您可以在Java中使用intanceOf
运算符。 instanceof运算符将对象与指定的类型进行比较。点击此处:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
答案 1 :(得分:1)
instanceof
是C#' s is
的Java等价物。没有as
的直接等价物;你必须在检查后做下垂。
if (thing instanceof Animal) {
Animal animal = (Animal)thing;
...
}
或者,如果你真的想要一个null
变量,如果演员表失败,试试
Animal animal = (thing instanceof Animal) ? (Animal)thing : null;
答案 2 :(得分:0)
使用Java中的instanceof
运算符
The java instanceof operator is used to test whether the object is an instance of the specified type (class or subclass or interface).
class Shape{}
class Round extends Shape{ //Round inherits Shape
public static void main(String args[]){
Round round=new Round();
System.out.println(round instanceof Shape); //true
}
}