繁体   English   中英

在Java中使用通用接口作为返回类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM