Ste*_*han 1 java generics serialization casting
使用以下代码:
Main.java
// ...
private static <T extends Serializable> T doStuff() {
Response r = ...
// ...
return r.getDetails();//Error here
}
// ...
Run Code Online (Sandbox Code Playgroud)
Response.java
interface Response {
// ...
Serializable getDetails();
// ...
}
Run Code Online (Sandbox Code Playgroud)
我得到这个编译错误:"类型不匹配:无法从方法中的Serializable转换为T" doStuff.
如果我转换返回的结果,则会删除错误.
return (T)r.getDetails();
Run Code Online (Sandbox Code Playgroud)
但现在我有这个警告:Type safety: Unchecked cast from Serializable to T.
@SuppressWarnings("unchecked")会抑制警告,但我发现这个解决方案很难看.
还有更好的选择吗?
问题是,通过你的代码,每个T必须是一个Serializable,但不是每个Serializable都是一个T.
假设这两个T1和T2进行Serializable,下面也会导致问题:
T1 t = new T2();
Run Code Online (Sandbox Code Playgroud)
作为T1和T2不相关的,即使他们都Serializable.
| 归档时间: |
|
| 查看次数: |
5826 次 |
| 最近记录: |