public class BigDecimalPropertyEditor extends PropertyEditorSupport { @Override public void setAsText(String text) throws IllegalArgumentException { setValue(new BigDecimal(text)); } @Override public String getAsText() { BigDecimal value = (BigDecimal) getValue(); return (value != null) ? value.toString() : ""; } } static { PropertyEditorManager.registerEditor(BigDecimal.class, BigDecimalPropertyEditor.class); PropertyEditor editor = PropertyEditorManager.findEditor(BigDecimal.class); System.out.println(editor); } 为什么我这段代码运行的打印的是null
时间: 2024-02-14 12:29:19 浏览: 106
SpringMVC中利用@InitBinder来对页面数据进行解析绑定的方法
根据您提供的代码,我注意到您在使用`PropertyEditorManager.findEditor(BigDecimal.class)`方法时打印了`editor`。但是,这个方法返回的是一个`PropertyEditor`实例,而不是`BigDecimalPropertyEditor`的实例。
在您的代码中,您已经通过`PropertyEditorManager.registerEditor(BigDecimal.class, BigDecimalPropertyEditor.class)`将`BigDecimalPropertyEditor`注册为`BigDecimal`类型的属性编辑器。这样,在其他地方使用`PropertyEditorManager.findEditor(BigDecimal.class)`方法时,会返回一个与`BigDecimal`类型关联的属性编辑器实例。
如果您想要获取到`BigDecimalPropertyEditor`的实例,您可以直接实例化它,而不使用`PropertyEditorManager.findEditor(BigDecimal.class)`方法。
以下是修改后的代码示例:
```java
public class BigDecimalPropertyEditor extends PropertyEditorSupport {
// 省略其他代码...
public static void main(String[] args) {
BigDecimalPropertyEditor editor = new BigDecimalPropertyEditor();
System.out.println(editor);
}
}
```
通过上述修改,您应该能够正确地打印出`BigDecimalPropertyEditor`的实例了。希望能解决您的问题!如果您还有其他疑问,请随时提问。
阅读全文