我试图为Java的BigDecimal添加一些方便的方法,并创建一个CustomBigDecimal类.
说我想添加一个方法reciprocal().
我试过这样做的继承性如下:
public class CustomBigDecimal extends BigDecimal
{
.....
.....
public CustomBigDecimal reciprocal()
{
.....
}
}
CustomBigDecimal foo1 = new CustomBigDecimal(1);
CustomBigDecimal foo2 = new CustomBigDecimal(2);
CustomBigDecimal foo2 = foo1.add(foo2); //cannot cast superclass to subclass
这种方法的问题是我不能将超类强制转换为子类(出于我很清楚的原因).并且超类的所有方法都返回一个BigDecimal.
我已经想到了使用如下组合解决这个问题的解决方案:
public class CustomBigDecimal
{
private BigDecimal val;
CustomBigDecimal(BigDecimal val)
{
this.val = val;
}
......
......
public CustomBigDecimal add(CustomBigDecimal augend)
{
return new CustomBigDecimal(val.add(augend.getBigDecimal()));
}
.....
.....
public CustomBigDecimal reciprocal()
{
....
}
}
但是如果我采用第二种方法,我必须编写BigDecimal的每个方法.
有没有更好的方法来解决这个问题?