将对象转换为另一个特定对象,然后对其进行修改

时间:2015-12-25 23:43:20

标签: java reflection

所以这就是我想要做的事情。在程序开始时,该类将查看该类中的所有字段。如果该字段是特定类型的对象,则将其添加到列表中。稍后可以调用某些对象的列表并进行修改。

抱歉,忘了发布实际错误。当我尝试将类强制转换为Value类型时,我收到此错误:

Cannot cast from Class<capture#8-of ?> to Value<?>

这是主要部分:

private List<Value> values = new ArrayList<Value>();

for (Field f : getClass().getDeclaredFields()) {
        if (f == null)
            continue;
        Class<?> clazz = f.getType();
        if (clazz.isAssignableFrom(Value.class)) {
            Value<?> value = (Value) clazz;
            values.add(value);
        }
    }

这是Value类:

public class Value<E> {

private String name;
private E value;

public Value(final String name, final E value) {
    this.name = name;
    this.value = value;
}

public final String getValueName() {
    return name;
}

public final E getValue() {
    return value;
}

public final void setValue(final E newValue) {
    value = newValue;
}

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您的问题是您尝试将字段的类或类型强制转换为值,但这不是您想要做的,您需要字段的值或实际数据并强制转换。

您可以获取如下字段的值(或数据):

Value<?> val = (Value<?>) field.get(parent_object);