所以这就是我想要做的事情。在程序开始时,该类将查看该类中的所有字段。如果该字段是特定类型的对象,则将其添加到列表中。稍后可以调用某些对象的列表并进行修改。
抱歉,忘了发布实际错误。当我尝试将类强制转换为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;
}
有没有办法做到这一点?
答案 0 :(得分:0)
您的问题是您尝试将字段的类或类型强制转换为值,但这不是您想要做的,您需要字段的值或实际数据并强制转换。
您可以获取如下字段的值(或数据):
Value<?> val = (Value<?>) field.get(parent_object);