[英]Using a generic interface as a return type in 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();
}
这是将泛型类型对象用作返回类型的正确方法吗?
当您编写接口AnotherObject
,它将进行编译。 但是通配符意味着可以返回任何类型参数。 获取MyObject
对象并对其调用getId
必须返回一个Object
,这不是很有用。
您可以在接口上定义类型参数T
,它将在getMyObject
返回类型的范围内,您可以在其中引用它。
public interface AnotherObject<T> {
public MyObject<T> getMyObject();
}
这样, MyObject
可以返回T
的类型。 实际上,您可能具有AnotherObject<Integer>
,它可以返回MyObject<Integer>
其getId()
方法返回Integer
而不是Object
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.