【发布时间】:2017-05-01 13:07:41
【问题描述】:
从 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>{...}。这似乎不起作用。有什么办法可以避免这 3 个课程或没有办法绕过它?
【问题讨论】:
标签: java generics design-patterns interface