无法读取java getter方法中的BigDecimal属性

无法读取java getter方法中的BigDecimal属性,java,getter,bigdecimal,Java,Getter,Bigdecimal,我在物业文件中的物业折扣=30,并且 在jave文件中声明如下: private BigDecimal discount; public void setDiscount(BigDecimal discount) { this.discount = discount; } public BigDecimal getDiscount() { return discount; } 当我尝试获取其值时,getDiscount()返回NULL。 但我只需要它作为大十进制。 我不必将它声

我在物业文件中的物业折扣=30,并且 在jave文件中声明如下:

private BigDecimal discount;
public void setDiscount(BigDecimal discount) {
    this.discount = discount;
}
public BigDecimal getDiscount() {
    return discount;
}
当我尝试获取其值时,getDiscount()返回NULL。 但我只需要它作为大十进制。 我不必将它声明为String或double,然后键入cast,尽管这样可以工作。 使用字符串或双精度可以很好地工作,但大小数除外。
请帮助我解决这个问题,或者BigDecimal在这种情况下不工作的原因是什么

它认为它可以正常工作,但是如果它返回
null
则在调用getter之前没有设置它。如果无法确保在调用getter之前设置了该值,则可以在类中实例化它。例如,0

private BigDecimal discount = new BigDecimal(0);

如果调用setter,则必须将要传递的值转换为long或double,然后在属性文件中使用
BigDecimal.valueOf()

,它总是以字符串形式返回

从属性文件获取数据时,将其转换为BigDecimal,然后使用它

SelectClient c= new SelectClient();
BigDecimal b = new BigDecimal(prop.getProperty("data"));
c.setDiscount(b);
System.out.println(c.getDiscount());

问题不在于BigDecimal。这就是你如何设置和获得它的地方。请将您的代码张贴在您设置它的地方。它可能是空的,因为它不是一开始就被设置的。看起来您缺少了知道如何将属性文件中的字符串“30”转换为BigDecimal的内容。你在用弹簧吗?或者…?我在ATG属性文件中声明值,并尝试在java file.properties文件(config.properties)中访问:折扣=30 java文件(config.java):私有BigDecimal折扣;public void setDiscount(BigDecimal discount){this.discount=discount;}public BigDecimal getDiscount(){return discount;}我将其用作BigDecimal discountPercentage=getconfig().getDiscount();在calculator.javawell中,它可能是一个实体,或者他不能发布整个代码。等待提供更多信息:)