我看到了这些:


Java generics interface implementation
java method generics implementing interface


我确实理解为什么编译器会抱怨。

无论如何,如果我们仅将泛型用作返回值。

public interface Connection
{
   <T extends Comparable<? super T>> T getVersion();
}


然后,此实现仅给出警告(我正在使用Java 7):

public class IoConnectionStub implements Connection
{
   public String getVersion()
   {
      return "1.0";
   }
}


这有效吗?还是会引起一些问题?

谢谢 !

最佳答案

对于泛型方法,调用者可以指定type参数-因此我应该能够使用:

Connection foo = new IoConnectionStub();
Integer x = foo.<Integer>getVersion();


在您的情况下,这显然行不通。

听起来,如果确实需要此功能(对于版本属性,我认为这有点奇怪...),您将希望使该接口具有通用性-例如,IoConnectionStub可以实现Connection<String>,然后结束包含以下代码:

Connection<String> foo = new IoConnectionStub();
String version = foo.getVersion();


您无法要求提供Integer版本号,因为IoConnectionStub不会实现Connection<Integer>

09-16 00:14