java - 在java中使用泛型接口(interface)作为返回类型

标签 java generics interface

您好,我有以下接口(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/

相关文章:

java - C++ 和 Java 中 CRC32 的不同结果

java - 为什么要重写接口(interface)方法?

java - 泛型和接口(interface)//我必须一起使用它们吗?

Java 泛型类型 EMPTY 与 null

用于通用记录的 Delphi TypeInfo

C# 接口(interface)函数返回类取决于它的实现位置

java - 抛出异常来控制流程 - 代码味道?

java - Eclipse JPA 添加新的父对象

java - 检查文件末尾是否存在新行

java - 非泛型类如何导致运行时错误