Java 调用合适的包装器
我正在做一个程序,允许你用一个窗口来实例化一个类。所以有一些字段,当我想转换成好的类型时,我会这样做:Java 调用合适的包装器,java,wrapper,Java,Wrapper,我正在做一个程序,允许你用一个窗口来实例化一个类。所以有一些字段,当我想转换成好的类型时,我会这样做: if (f.getType() == int.class) m.invoke(res, Integer.parseInt(f.getText())); else if (f.getType() == double.class) m.invoke(res
if (f.getType() == int.class)
m.invoke(res, Integer.parseInt(f.getText()));
else if (f.getType() == double.class)
m.invoke(res, Double.parseDouble(f.getText()));
else if (f.getType() == boolean.class)
m.invoke(res, Boolean.parseBoolean(f.getText()));
....
有没有办法只用一行就可以做到?否则,我必须检查每个基元类型。使用表示基元类型的类类型 每个基本包装类都包含静态类型静态字段 例如,整数类contais
public static final Class<Integer> TYPE = (Class<Integer>) Class.getPrimitiveClass("int");
或者您可以使用class类型的
name()
方法
请尝试以下代码:
if (f.getType() == Integer.TYPE)
m.invoke(res, Integer.parseInt(f.getText()));
else if (f.getType() == Double.TYPE)
m.invoke(res, Double.parseDouble(f.getText()));
else if (f.getType() == Boolean.TYPE)
m.invoke(res, Boolean.parseBoolean(f.getText()));
...
if (f.getType().getName().equals(int.class.getName()))
m.invoke(res, Integer.parseInt(f.getText()));
else if (f.getType().getName().equals(double.class.getName()))
m.invoke(res, Double.parseDouble(f.getText()));
else if (f.getType().getName().equals(boolean.class.getName()))
m.invoke(res, Boolean.parseBoolean(f.getText()));
....
或使用此代码在单行中执行此操作
convert(f.getType(),f.getText());
import java.beans.PropertyEditor;
import java.beans.PropertyEditorManager;
private Object convert(Class<?> targetType, String text) {
PropertyEditor editor = PropertyEditorManager.findEditor(targetType);
editor.setAsText(text);
return editor.getValue();
}
convert(f.getType(),f.getText());
导入java.beans.PropertyEditor;
导入java.beans.PropertyEditorManager;
私有对象转换(类targetType,字符串文本){
PropertyEditor编辑器=PropertyEditorManager.findEditor(targetType);
编辑器.setAsText(文本);
返回editor.getValue();
}
可能重复的@Eko想问“这么说没有办法只用一行吗?我必须检查每个基本类型?”+1这个问题。你应该扩展你的答案,包括解释。所以没有办法只用一行吗?我必须检查每一个基本类型?我已经更新了我的代码。使用属性编辑器类。请试一试。按照您的要求更新您的问题“所以没有办法只使用一行?我必须检查每个基本类型”以使其不重复问题。很好,除了字符串和字符外,它工作正常。但对于其他每一种primitiv类型,它都有效