Java通用接口返回类型 从C++迁移到java。< /P>

Java通用接口返回类型 从C++迁移到java。< /P>,java,generics,design-patterns,interface,Java,Generics,Design Patterns,Interface,我有一个第三方代码和一个我需要实现的接口,它是这样的 public interface Foo<T>{ public T doSomething(); } 我找不到任何方法来避免写下面的3节课 public class ARet implements Foo<A>{...} public class BRet implements Foo<B>{...} public class CRet implements Foo<C>{...

我有一个第三方代码和一个我需要实现的接口,它是这样的

public interface Foo<T>{
       public T doSomething();
}
我找不到任何方法来避免写下面的3节课

public class ARet implements Foo<A>{...}
public class BRet implements Foo<B>{...}
public class CRet implements Foo<C>{...}
公共类ARet实现了Foo{…}
公共类BRet实现了Foo{…}
公共类CRet实现Foo{…}

对于给定的接口
Foo
,是否不可能编写一个返回
T extends Z
的实现,它看起来像
公共类Ret implements Foo{…}
。这似乎不起作用。有没有办法避免这3个类,或者没有办法绕过它?

如果希望接口的实现是泛型的,则需要将T声明为Ret的泛型类型参数:

public class Ret<T extends Z> implements Foo<T>{...}
public类Ret实现Foo{…}

注意界面中的函数签名
T doSomething()
。它将返回类型
T
,而从不将
T
对象作为参数之一。这意味着必须在函数
doSomething()
中创建要返回的对象
T
。虽然我是Java新手,但我的理解是,由于类型擦除,这是不可能的。或者我误解了这些概念?@cpluplusrat它也可能意味着实现类有一个
set(T object)
或其他一些方法,将
T
实例传递给实现类的实例,而您的
something()
方法返回该实例。这类似于
java.util.List
接口,其
get(inti)
方法返回一个
T
实例。
T
实例不能在
doSomething()
方法中创建,除非您将
Class
参数传递给它。好的,为了使您的解决方案起作用,无法转义setter方法,以便
doSomething()
具有要处理和返回的对象。我是这么想的,但需要第二种意见。谢谢我会将此标记为已解决。
public class Ret<T extends Z> implements Foo<T>{...}