有了這個設計:Java的泛型和接口
interface Foo<T> {
void doSomething(T t);
}
class FooImpl implements Foo<Integer> {
//code...
}
interface Bar extends Foo {
//code...
}
class BarImpl extends FooImpl implements Bar {
//code...
}
它給了我編譯錯誤:
接口美孚不能 實施不止一次與 不同的參數:Foo和 富
一個簡單的修復這個問題是:
interface Bar extends Foo<Integer> {
// code...
}
Bar接口中的整數型是完全沒用的。
有沒有更好的方法來解決這個問題? 有什麼更好的設計?
感謝您的建議。
編輯:
給出解決方案:
> interface Bar<T> extends Foo<T>
是好的,但它作爲我以前的解決方案相同。我不需要T型酒吧。
讓我給一個更好的例子:
interface ReadOnlyEntity {
}
interface ReadWriteEntity extends ReadOnlyEntity {
}
interface ReadOnlyDAO<T extends ReadOnlyEntity> {
}
interface ReadWriteDAO<K extends ReadWriteEntity, T extends ReadonlyEntity> extends ReadOnlyDAO<T> {
}
這是一個好的設計?
這個問題不能沒有你實際的接口名稱來回答。 – SLaks 2010-10-14 12:39:55
這是因爲泛型是Java(擦除)中的編譯時魔術,因此不能使用不同的泛型參數兩次實現相同的接口。 – Lucero 2010-10-14 12:56:55
@SLaks:請看看編輯部分。 – mhshams 2010-10-14 14:05:49