cpl*_*rat 2 java generics design-patterns interface
从C++迁移到Java.
我有一个第三方代码,我需要实现一个类似于此的接口.
public interface Foo<T>{
public T doSomething();
}
Run Code Online (Sandbox Code Playgroud)
我想实现这个接口,以便我可以调用doSomething()并获得3个不同的类A, B and C,这些类扩展了一个共同的基础Z,如下所示.
public class A extends Z{...};
public class B extends Z{...};
public class C extends Z{...};
Run Code Online (Sandbox Code Playgroud)
我找不到任何避免编写以下3个类的方法.
public class ARet implements Foo<A>{...}
public class BRet implements Foo<B>{...}
public class CRet implements Foo<C>{...}
Run Code Online (Sandbox Code Playgroud)
对于给定的接口Foo,是否不可能编写一个返回T extends Z看起来像的实现public class Ret implements Foo<T extends Z>{...}.这似乎不起作用.有没有办法避免这三个类或没有办法绕过它?
如果希望接口的实现是通用的,则需要将T声明为Ret的泛型类型参数:
public class Ret<T extends Z> implements Foo<T>{...}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1016 次 |
| 最近记录: |