我正在测试代码的某些部分,但我发现在java中设置属性的奇怪行为。我为JUnit测试设置了一些假属性。问题是属性PARTNER_ID,它应该根据定义Integer值,但是当我用方法设置它时我必须将它设置为String,否则我得到空指针异常。 我的一些代码重要部分不仅仅是单词:
import java.util.Properties;
//definition of properties
public interface PropertyKeys {
public static final PropertyKeyInteger PARTNER_ID = new PropertyKeyInteger(
"partnerId",null);
}
//fake set of the properties for mock
Properties properties = new Properties();
properties.put("partnerId","102"); //this works
// properties.put("partnerId",102); // this ends with null pointer on PropertyKeys.PARTNER_ID.getProperty(properties)
//this is how its called in some method
PropertyKeys.PARTNER_ID.getProperty(properties)
问题是:为什么它只允许我将预期的整数值属性设置为String并且使用Integer它在空指针异常时失败并带有空指针?