我有一堂课,看起来像。

public class ParseValue {
  public String value;
  public final Class classType;
}


我想制作一个函数,该函数执行转换并返回强制转换值。

public T parseValue(ParseValue parseInfo) {
  if(parseInfo.classType == String.class) {
    return parseInfo.value;
  } else if (parseInfo.classType == Double.class) {
    return Double.valueOf(parseInfo.value);
  }
}


现在,我可以让此函数返回一个Object,然后在得到结果后对其进行转换,但是有没有一种方法可以使该函数根据输入的ParseValue的classType字段进行转换?

最佳答案

最安全的方法是使ParseValue通用:

public class ParseValue<T> {
    public String value;
    public final Class<T> classType;

    public T parseValue() {
        Object result;
        if (classType == String.class) {
            result = value;
        } else if (classType == Double.class) {
            result = Double.valueOf(value);
        } else {
            throw new RuntimeException("unknown value type");
        }
        return classType.cast(result);
    }
}

10-07 21:01