Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中避免ClassCastException的策略_Java_C# - Fatal编程技术网

Java中避免ClassCastException的策略

Java中避免ClassCastException的策略,java,c#,Java,C#,在C#中,为了避免类强制转换异常,我将执行以下操作: Thing=createThing() 动物=作为动物的事物 if(动物!=null){ } 我想在Java中进行运行时检查,如果不需要的话,我强烈希望不要抛出ClassCastException。在Java中,什么是合适的策略?您可以在Java中使用intanceOf操作符。instanceof运算符将对象与指定类型进行比较。这里的详细信息:在Java中使用instanceof操作符 java instanceof操作符用于测试对象是否是指

在C#中,为了避免类强制转换异常,我将执行以下操作:

Thing=createThing()

动物=作为动物的事物

if(动物!=null){

}


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

您可以在Java中使用
intanceOf
操作符。instanceof运算符将对象与指定类型进行比较。这里的详细信息:

在Java中使用
instanceof
操作符

java instanceof操作符用于测试对象是否是指定类型(类、子类或接口)的实例。


instanceof
是C#的
is
的Java等价物。没有直接等同于的;检查后,你必须做向下广播

if (thing instanceof Animal) {
    Animal animal = (Animal)thing;
    ...
}
或者,如果如果强制转换失败,您真的希望变量为
null
,请尝试

Animal animal = (thing instanceof Animal) ? (Animal)thing : null;

+(2-1)或
isassinablefrom()
,用于指出as运算符也执行强制转换操作
if (thing instanceof Animal) {
    Animal animal = (Animal)thing;
    ...
}
Animal animal = (thing instanceof Animal) ? (Animal)thing : null;