使用以下代码:
主.java
// ...
private static <T extends Serializable> T doStuff() {
Response r = ...
// ...
return r.getDetails();//Error here
}
// ...
Response.java
interface Response {
// ...
Serializable getDetails();
// ...
}
我在 doStuff
方法中收到此编译错误:“类型不匹配:无法从 Serializable 转换为 T”。
如果我转换返回的结果,错误就被移除了。
return (T)r.getDetails();
但现在我有这个警告:类型安全:未检查从 Serializable 到 T 的转换
。
@SuppressWarnings("unchecked")
会抑制警告,但我发现这个解决方案很难看。
还有更好的选择吗?
最佳答案
问题是根据您的代码,每个 T
都必须是一个 Serializable
,但并非每个 Serializable
也是一个 T
。
假设 T1
和 T2
都是Serializable
,以下也会导致问题:
T1 t = new T2();
因为 T1
和 T2
不相关,即使它们都是Serializable
。
关于java - 为什么我会收到此错误 "Type mismatch: cannot convert from Serializable to T"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17065120/