Java 具有通用接口实现的工厂继承
Java factory inheritance with generic interface implementation
我想要一个继承另一个工厂的工厂,两个工厂都实现相同的通用接口,但类型不同,相互继承:
class FactoryA implements FactoryI<A> {
// common code
...
A get() {
return new A();
}
}
class FactoryB extends FactoryA implements FactoryI<B> {
B get() {
return new B();
}
}
class B extends A {
}
FactoryI<T> {
T get()
}
但这给了我以下编译错误:
'FactoryI' cannot be inherited with different type arguments: 'A' and 'B'
我的第一个版本没有从 FactoryA 继承 FactoryB,但它工作正常。
但事实证明,现在我想重用两个工厂之间的公共代码。
实现此目标的最佳方法是什么?
您还需要使 FactoryA
通用。这样一个子类可以 return A
的不同子类
class FactoryA<T extends A> implements FactoryI<T> {
// common code
public T get() {
return (T) new A();
}
}
class FactoryB extends FactoryA<B> {
public B get() {
return new B();
}
}
class A {
}
class B extends A {
}
interface FactoryI<T> {
T get();
}
我想要一个继承另一个工厂的工厂,两个工厂都实现相同的通用接口,但类型不同,相互继承:
class FactoryA implements FactoryI<A> {
// common code
...
A get() {
return new A();
}
}
class FactoryB extends FactoryA implements FactoryI<B> {
B get() {
return new B();
}
}
class B extends A {
}
FactoryI<T> {
T get()
}
但这给了我以下编译错误:
'FactoryI' cannot be inherited with different type arguments: 'A' and 'B'
我的第一个版本没有从 FactoryA 继承 FactoryB,但它工作正常。 但事实证明,现在我想重用两个工厂之间的公共代码。
实现此目标的最佳方法是什么?
您还需要使 FactoryA
通用。这样一个子类可以 return A
class FactoryA<T extends A> implements FactoryI<T> {
// common code
public T get() {
return (T) new A();
}
}
class FactoryB extends FactoryA<B> {
public B get() {
return new B();
}
}
class A {
}
class B extends A {
}
interface FactoryI<T> {
T get();
}