我会考虑PropertyEditor
为此使用 JavaBeans 机制。
@Test
public void testIsOfType() {
assertFalse(test("nope", Integer.class));
assertFalse(test("nope", Boolean.class));
assertTrue(test("1", Integer.class));
assertTrue(test("true", Boolean.class));
}
boolean test(String str, Class<?> clazz) {
PropertyEditor propertyEditor = PropertyEditorManager.findEditor(clazz);
if (propertyEditor != null) {
try {
propertyEditor.setAsText(str);
return true;
} catch (Exception ex) {}
}
return false;
}
这避免了显式反射的需要,如果您决定需要测试原始包装器以外的类,您可以使用PropertyEditorManager.registerEditor()
.
不幸的是,这仍然存在 Rohit 的解决方案test("1", Number.class)
会失败的问题。