春天-如何改变财产

时间:2019-03-25 00:08:14

标签: spring

我有一个不能更改的课程:

public class A {
  private String amountOfErrors;

  public String getAmountOfErrors() {
    return amountOfErrors;
  }

  public void setAmountOfErrors(String amountOfErrors) {
    this.amountOfErrors = amountOfErrors;
  }
}
我可以更改的

bean:

<bean class="com.company.facades.A">
  <property name="amountOfErrors" type="String"/>
</bean> 

如何将String类型更改为BigDecimal以便像这样调用smth:

 A a = new A();
 a.setAmountOfErrors(BigDecimal.ZERO)

1 个答案:

答案 0 :(得分:1)

这在某种程度上取决于您如何注入bean。但基本上只是:

public class B extends A {
  public void setAmountOfErrors(BigDecimal amountOfErrors) {
    this.amountOfErrors = amountOfErrors.toString();
  }
}

<bean class="com.company.whatever.B">
  <property name="amountOfErrors" type="BigDecimal"/>
</bean> 

我实际上不确定您要对A或B上的属性做什么。主要要点是您可以创建B,但是Spring会知道它是A并将其注入为A

但是,如果要从Java调用Setter的BigDecimal版本,则需要将其作为B注入,或将注入的A(实际上是B)强制转换为B。