您好,我有以下接口(interface)和两个对象,按以下方式实现它
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";
}
}
我想创建另一个接口(interface),声明一个返回 MyObject 类型的对象的方法
public interface AnotherObject {
public MyObject<?> getmyObject();
}
这是使用泛型类型对象作为返回类型的正确方法吗?
最佳答案
正如您编写的界面 AnotherObject
,它将编译。但通配符意味着可以返回任何类型的参数。获取MyObject
对象和调用getId
其上必须返回 Object
,这不是很有用。
您可以定义类型参数T
在接口(interface)上,它将在 getMyObject
返回类型的范围内,您可以引用一下。
public interface AnotherObject<T> {
public MyObject<T> getMyObject();
}
这样,MyObject
可以返回 T
类型。在实践中,您可能有AnotherObject<Integer>
可以返回 MyObject<Integer>
谁的getId()
方法返回 Integer
而不是Object
.
关于java - 在java中使用泛型接口(interface)作为返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31460211/