java - 在不改变类头的情况下使用泛型

标签 java class generics

假设我有两个类(class)。 Pair :

public class Pair<X, Y> {
 public X x;
 public Y y;

  public Pair(X x , Y y) {
   this.x = x;
   this.y = y;
  }
}

和类Triple :

public class Triple<X, Y, Z> {
 public X x;
 public Y y;
 public Z z;

 public Triple(X x , Y y, Z z) {
  this.x = x;
  this.y = y;
  this.z = z;
 }
}

我想创建一个类 Test不改变类头(不能做 Test<X, Y, Z> ):

public class Test {
  ...
}

在这个类中应该有一个方法,它接受 Triples 的列表。并且应该返回一个 Map,其中三元组的 x 值作为键,三元组的 y 和 z 值作为映射的值。

如何在不更改类 header 的情况下执行此操作?

最佳答案

你可以的。您需要使方法通用而不是它所在的类。

class Test {

    static <X, Y, Z> Map<X, Pair<Y, Z>> makeMap(List<Triple<X, Y, Z>> triples) {        
        // your implementation
    }
}

方法可以是static或非 static .在任何一种情况下,通用参数 <X, Y, Z>出现在返回类型之前。

关于java - 在不改变类头的情况下使用泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49575025/

相关文章:

java - 我的功能有逻辑错误吗?

java - JDBC : Operation not allowed after ResultSet closed

java - 在同一个类中创建一个类的引用变量是否正确?它与使用 new 关键字创建的普通对象有何不同?

java - 在android中使用AES CTR模式随机访问InputStream

java - 序列不向上计数

java - 将代码组织成类?

python - 绑定(bind)方法上的装饰器可以访问类及其祖先

java - 返回集合的通用方法给出不安全类型转换警告

Java嵌套泛型类型

c# - 需要帮助实现接口(interface)