在java中使用泛型接口作为返回类型
你好,我有下面的接口和两个对象,我用下面的方式来实现它
public interface MyObject<T> {
T getId();
String getName();
}
public class ObjectA implements MyObject<Integer> {
@Override
public Integer getId() {
return 0;
}
@Override
public String getName() {
return "A";
}
}
public class ObjectB implements MyObject<Long> {
@Override
public Long getId() {
return 0;
}
@Override
public String getName() {
return "B";
}
}
我想创建另一个接口,该接口声明一个返回MyObject类型对象的方法
public interface AnotherObject {
public MyObject<?> getmyObject();
}
这是使用泛型类型对象作为返回类型的正确方法吗
# 1 楼答案
在编写接口
AnotherObject
时,它将被编译。但通配符意味着可以返回任何类型参数。获取MyObject
对象并对其调用getId
必须返回一个Object
,这不是很有用您可以在接口上定义类型参数
T
,它将在返回类型getMyObject
的范围内,您可以在其中引用它这样,
MyObject
就可以返回T
类型。实际上,可能有AnotherObject<Integer>
可以返回MyObject<Integer>
,其getId()
方法返回Integer
,而不是Object