你好我有以下界面和两个以下列方式重复它的对象
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();
}
这是使用泛型类型对象作为返回类型的正确方法吗?
答案 0 :(得分:1)
当您编写接口AnotherObject
时,它将编译。但通配符意味着可以返回任何类型参数。获取MyObject
对象并在其上调用getId
必须返回Object
,这不是非常有用。
您可以在界面上定义类型参数T
,它将在getMyObject
的返回类型的范围内,您可以在其中引用它。
public interface AnotherObject<T> {
public MyObject<T> getMyObject();
}
这样,MyObject
可以返回T
类型。实际上,您可能AnotherObject<Integer>
可以返回MyObject<Integer>
方法返回getId()
而不是Integer
的{{1}}。