Java 使用泛型在类中强制相同的泛型类型

Java 使用泛型在类中强制相同的泛型类型,java,generics,Java,Generics,以下示例取自: 类对{ 私人X优先; 二等兵; 公共对(X a1,Y a2){ 第一个=a1; 第二个=a2; } public X getFirst(){return first;} public Y getSecond(){return second;} public void setFirst(X arg){first=arg;} public void setSecond(Y arg){second=arg;} } 问题:我想强制执行X和Y应为同一类型。示例Pair正确,但不应接受Pa

以下示例取自:

类对{
私人X优先;
二等兵;
公共对(X a1,Y a2){
第一个=a1;
第二个=a2;
}
public X getFirst(){return first;}
public Y getSecond(){return second;}
public void setFirst(X arg){first=arg;}
public void setSecond(Y arg){second=arg;}
}
问题:我想强制执行
X
Y
应为同一类型。示例
Pair
正确,但不应接受
Pair
。有可能通过泛型实现这一点吗

使用

class Pair<X> {
类对{

并将所有<代码> y <代码>改为<代码> x>代码>

你考虑过这样的事情吗?

class LikePair<Z> extends Pair<Z,Z> {

    public LikePair(Z a, Z b) {
        super(a, b);
    }

}
类LikePair扩展对{
公共类飞机(Z a,Z b){
超级(a,b);
}
}
这样,您就可以保留Pair类(可能非常有用),同时还需要强制执行“相似性”约束

作为编程风格的问题,我会使Pair(和LikePair)不可变(最终字段,没有设置符)。实现equals()、hashCode()、toString()等也很好。

当我们使用
类Pair
时,是否可以编写Pair或
Pair
class LikePair<Z> extends Pair<Z,Z> {

    public LikePair(Z a, Z b) {
        super(a, b);
    }

}