我看到了这些:
我明白为什么编译器会抱怨。
无论如何,如果我们只使用泛型作为返回值。
public interface Connection
{
<T extends Comparable<? super T>> T getVersion();
}
然后这个实现只会发出警告(我使用的是Java 7):
public class IoConnectionStub implements Connection
{
public String getVersion()
{
return "1.0";
}
}
这有效吗?或者会引起一些问题吗?
谢谢!
答案 0 :(得分:7)
对于通用方法,调用者可以指定类型参数 - 所以我应该可以使用:
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>
。