java为不同的泛型类提供一个接口
我在Java中使用泛型时遇到了一些问题,因为我不确定我想要实现的东西是否真的存在
我编写了以下类(这里简化了,没有getter/setter):
public class Pair<T>{
public T firstEntry;
public T secondEntry;
public Pair(T p_First, T p_Second) {
this.m_First = p_First;
this.m_Second = p_Second;
}
}
现在我想要的是同一个类,但是第一个条目和第二个条目可能是不同的类型。例如,像这样的课程:
public class PairMultipleType<T, K>{
public T firstEntry;
public K secondEntry;
public Pair(T p_First, K p_Second) {
this.m_First = p_First;
this.m_Second = p_Second;
}
}
但我想使用这样的类:
Pair<Integer> myPair = new Pair<Integer>(a, b); //Creates pair with one type.
Pair<Integer, String> myPair = new Pair<Integer, String>(a, "Hallo Welt"); //Creates pair with two types.
我知道这段代码无论如何都是错误的,因为这些类可能没有相同的名称。但这就是问题的关键:是否有可能编写一个我可以用来实现所需行为的接口?如果可能的话,怎么做
# 1 楼答案
不能将
Pair
变量(或类本身)声明为具有数量可变的类型参数但您可以做的是
Pair
扩展PairMultipleType
,但将其唯一的类型参数定义为PairMultipleType
的两个参数这种设计要小心,因为很容易混淆泛型类型参数。但你可以这样做: