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);
}
}