いくつかの作業を行い、結果を生成するこのジェネリッククラスがあるとしましょう:
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
}
}
最初の例のように、型の安全性をうまく保つ方法はありますか?
ありがとう、テオ