有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在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) 个答案

  1. # 1 楼答案

    在编写接口AnotherObject时,它将被编译。但通配符意味着可以返回任何类型参数。获取MyObject对象并对其调用getId必须返回一个Object,这不是很有用

    您可以在接口上定义类型参数T,它将在返回类型getMyObject的范围内,您可以在其中引用它

    public interface AnotherObject<T> {
        public MyObject<T> getMyObject();
    }
    

    这样,MyObject就可以返回T类型。实际上,可能有AnotherObject<Integer>可以返回MyObject<Integer>,其getId()方法返回Integer,而不是Object