gpt4 book ai didi

java - 调用正确的包装器

转载 作者:行者123 更新时间:2023-12-01 13:18:17 24 4
gpt4 key购买 nike

我正在制作一个程序,允许您用窗口实例化一个类。所以有字段,当我想转换为好的类型时,我会这样做:

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()));
....

有没有一种方法可以只用一行来完成?否则我必须检查每个原始类型。

最佳答案

使用Class TYPE表示原始类型每个Primitive Wrapper类都包含静态TYPE静态字段

例如整数类包含

public static final Class<Integer>  TYPE = (Class<Integer>) Class.getPrimitiveClass("int");

试试这个代码:

     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()));
...
<小时/>

或者您可以使用 TYPE 类的 name() 方法

试试这个代码:

     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();
}

关于java - 调用正确的包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22282843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com