java - ClassCastException 与 "inconvertible types"编译错误

标签 java casting compiler-errors classcastexception

所以我想知道 Java 在什么情况下抛出 ClassCastException 以及什么时候是“不可转换类型”编译错误。我想这与接口(interface)有关。

我的意思是对于接口(interface)来说,情况更加困难。例如:

interface SomeInterface {}
class SomeClass {}
SomeClass someObject = new SomeClass();
SomeInterface someInterface  = (SomeInterface)someObject;

throws ClassCastException 认为在编译时很清楚,SomeClass 对象不能转换为 SomeInterface

最佳答案

接口(interface)没必要。强制转换告诉编译器您将从另一种类型的变量引用一种类型的实例。

当强制转换建议的类型转换不可行时,您会收到编译错误。

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

关于java - ClassCastException 与 "inconvertible types"编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864402/

相关文章:

objective-c - 重复符号错误——全局常量

java - JBACI java编译错误

java - 如何完美模拟 KeyEvents?

java - 确保微服务 Spring Cloud 安全 Oauth2

JAVA扩展ASCII表用法

c - 函数错误: double[] to double?

java - Eclipse 出现死代码警告,但是出了什么问题?

java - 如何用新加密的数据更新部分加密的数据?

java - 如何将 int 转换为 double?

使用太多参数调用 C 函数