我正在编写一个实现某些程序分析的Java程序。作为其中的一部分,我想要一种在我正在分析的程序中表示“值”的类型。就我的目的而言,价值观只是整数。但是,我不想在我的代码中使用int
/ Integer
类型,因为int
/ Integer
不是一个非常具有描述性的名称。我宁愿写Value
。然后我会喜欢来写
class Value extends Integer {}
完成。但这不起作用,因为Integer
是最后一堂课。所以我目前的解决方案是给我的Value
类一个int
字段,然后手动实现所有各种标准方法:
class Value {
int val;
public String toString() {...}
public int hashCode() {...}
public boolean equals(...) {...}
...
}
当我真的只是寻找行为类似于Integer
但具有更具描述性的名称的类时,这感觉有些过分。
我有什么选择?
答案 0 :(得分:1)
您几乎可以在代理中包装任何内容:
class Value<T extends Number> extends Number {
final T v;
public Value(T v) {
this.v = v;
}
@Override
public int intValue() {
return v.intValue();
}
@Override
public long longValue() {
return v.longValue();
}
@Override
public float floatValue() {
return v.floatValue();
}
@Override
public double doubleValue() {
return v.doubleValue();
}
@Override
public String toString() {
return v.toString();
}
@Override
public int hashCode() {
return v.hashCode();
}
@Override
public boolean equals(Object obj) {
return v.equals(obj);
}
}