我看到了这些:
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>
。