我尝试将一个对象强制转换为我的 Action 类,但它会导致警告:
Type safety: Unchecked cast from Object to Action<ClientInterface>
Action<ClientInterface> action = null;
try {
Object o = c.newInstance();
if (o instanceof Action<?>) {
action = (Action<ClientInterface>) o;
} else {
// TODO 2 Auto-generated catch block
throw new InstantiationException();
}
[...]
感谢您的帮助
最佳答案
是的 - 这是 type erasure 的自然结果.如果 o
实际上是 Action<String>
的一个实例不会被 Actor 捕捉到 - 你只会在尝试使用它时看到问题,传入 ClientInterface
而不是字符串。
您可以使用以下方法消除警告:
@SuppressWarnings("unchecked")
作为一个函数注解,但你不能轻易理清底层问题:(
关于java - 类型安全 : Unchecked cast from Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2592642/