假设我有这个通用类,它做了一些工作并产生了结果:
public abstract class Work<T> {
private T mResult;
public Work(T result) {
mResult = result;
}
public abstract <T> void doWork(T result);
public T getResult() {
return mResult;
}
}
对于这个类的用户,我想要看起来像这样的类型安全:
Work<MyResult> work = new Work<MyResult>(new MyResult()){
public void work(MyResult result){
//...
}
}
问题是 Java 不能以这种方式工作,并迫使我从泛型类型转换:
Work<MyResult> work = new Work<MyResult>(new MyResult()){
public <T> void work (T result){
// (MyResult)result - not nice
}
}
有没有办法像第一个例子那样以一种很好的方式实现类型安全?
谢谢,泰奥