2 回答
TA贡献1828条经验 获得超13个赞
看起来您的问题有两个部分。
将用户提供的值动态转换为用户也提供的类型。我认为这可以通过提供一个
Type
接口来实现,该接口可以具有parse
将字符串转换为Type
. 每个Type
界面还可以提供用户输入的名称(如 double 或 name 等)。第二部分 - 您不想对可用类型进行硬编码,可以通过使用 Java SPI(服务提供者接口)来实现。只需谷歌,你就会得到很好的例子。一个在这里。
TA贡献1836条经验 获得超3个赞
我不知道你到底需要什么,但在 Java 中你可以找到这样的对象类型:
if (value.getClass() == String.class) {
....
}
和:
if (value instanceof Object) {
....
}
如果您不喜欢使用一堆 if 语句:
switch (obj.getClass().getName()){
case "java.lang.String":
break;
case "java.lang.Integer":
break;
default:
}
并将您的通用对象转换为用户提供的自定义类型,您可以使用以下代码:
Object obj = "";
String className = "java.lang.String";
try {
Class aClass = Class.forName(className);
Object result = aClass.cast(obj);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
使用此代码,您可以将对象转换为以字符串形式给出的类名。
添加回答
举报