在Java中避免ClassCastException的策略

时间:2014-12-31 05:51:49

标签: java c#

在C#中,为了避免类转换异常,我会这样做:

  

事物= createThing();

     

动物动物=动物的东西;

     

if(animal!= null){

 //do something
     

}

我想在Java中进行运行时检查,如果我不必,我强烈不想抛出ClassCastException。 Java中适合的策略是什么?

3 个答案:

答案 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  
    }  
      }