我有一个方法需要检查Object的值并确定其数据类型,然后将传入的value
转换为适当的格式化java数据类型。有没有更优雅的方式来做到这一点?开关?功能
我正在使用Apache Chemistry。目标是转换为CMIS将接受的类型。我尝试的原始代码是使用他们的API来做:PropertyType type = PropertyType.fromValue(value);最初,我打算使用此类型来确定如何进行转换。但是,fromValue方法总是返回null,所以我需要从值本身获取类型。
这就是最初的样子(使用Chemistry API):
PropertyType type = propertyDefinition.getPropertyType();
if (type.equals(PropertyType.BOOLEAN) {
return Boolean.parseBoolean(value);
这仅适用于从CMIS连接中获取类型。我需要它来从属性文件中获取类型,因此我没有可访问的API,只有值。
if (value instanceOf Boolean) {
return Boolean.parseBoolean(value);
} else if (value instanceof Integer) {
return Integer.parseInt(value);
} else if (value instanceof Double) {
return Double.valueOf(value);
} else if (value instanceof DateTime) {
DateTimeFormatter dateFormat = new DateTimeFormatterFactory(format)
.createDateTimeFormatter();
return dateFormat.parseDateTime(value).toDate();
} else if (value instanceof String) {
return value;
}
答案 0 :(得分:0)
我不确定我是否已正确理解您的问题,但我认为您有一个名为value的对象,并且您想要检查它是什么类型的对象并为其设置适当的PropertyType。如果是这种情况,请试试这个:
if (value instanceOf Boolean) {
return PropertyType.BOOLEAN;
} else if (value instanceof Integer) {
return PropertyType.INTEGER;
} else if (value instanceof Double) {
return PropertyType.DECIMAL; // well, sort of, maybe.
} else if (value instanceof DateTime) {
return PropertyType.DATETIME;
} else if (value instanceof String) {
return PropertyType.STRING;
}