从C ++迁移到Java。
我有一个第三方代码,其中包含我需要实现的接口,类似于此。
public interface Foo<T>{
public T doSomething();
}
我想实现这个接口,以便我可以调用doSomething()并获得3个不同的类A, B and C
,这些类扩展了一个公共基础Z
,如下所示。
public class A extends Z{...};
public class B extends Z{...};
public class C extends Z{...};
我找不到任何避免编写以下3个类的方法。
public class ARet implements Foo<A>{...}
public class BRet implements Foo<B>{...}
public class CRet implements Foo<C>{...}
对于给定的接口Foo
,是否无法编写一个返回T extends Z
看似public class Ret implements Foo<T extends Z>{...}
的实现的实现。这似乎不起作用。有没有办法避免这三个类或没有办法绕过它?
答案 0 :(得分:6)
如果希望接口的实现是通用的,则需要将T声明为Ret的泛型类型参数:
public class Ret<T extends Z> implements Foo<T>{...}