【发布时间】:2017-01-04 03:42:17
【问题描述】:
我构建了一个简单的文档存储,其中的实体具有不同类型的字段,我有 Float、Int 和 String 类型。实体包含值的数组列表,如果有人更新实体的架构,我希望能够尝试将值转换为新类型。
public interface FieldType<T> {
ArrayList<T> values;
}
public class FloatField implements FieldType<Float> {
}
public class StringField implements FieldType<String> {
}
我曾考虑过使用具有以下方法的抽象类
public abstract class Field<T> implements FieldType<T> {
abstract public <T> castFromString(String value);
abstract public <T> castFromFloat(Float value);
abstract public <T> castFromInt(Int value);
}
public class FloatField extends Field<Float> {
@override
public <Float> castFromString(String value){
Float castValue = null;
try {
castValue = Float.parseFloat(value);
} catch(Exception e){
}
return castValue;
}
}
我不太喜欢这种解决方案,因为每次向系统添加额外类型时,我都必须添加一个新的抽象方法。
有什么想法可以更好地实现吗?
【问题讨论】: