所以我想知道Java抛出ClassCastException
的情况以及何时出现“不可转换的类型”编译错误。我猜这是关于接口的东西。
我的意思是接口有更困难的情况。例如:
interface SomeInterface {}
class SomeClass {}
SomeClass someObject = new SomeClass();
SomeInterface someInterface = (SomeInterface)someObject;
抛出ClassCastException
以为在编译时很明显,SomeClass
对象无法转换为SomeInterface
。
答案 0 :(得分:3)
接口没有必要。演员告诉编译器你将从另一种类型的变量引用一种类型的实例。
如果无法使用强制转换建议的类型转换,则会出现编译错误。
即。 String s = (String) new Integer(1);
有时候有可能,有时候没有,代码会编译,但是你可能会遇到ClassCastException。
即。
Object o = ...;
String s = (String) o;//Depending on the content of o, this line may throw a ClassCastException
答案 1 :(得分:0)
例如:
interface Fruct{}
class Banana{}
Fruct fruct = (Fruct) new Banana(); // Compile OK, but throw a ClassCastException
vs。
class Fruct{}
class Banana{}
Fruct fruct = (Fruct) new Banana(); // Compile-Time-Error: Inconvertible types