2015-12-25 64 views
-1

所以这就是我想要做的。在课程开始时,班级会查看该班级中的所有字段。如果该字段是特定类型的对象,则将其添加到列表中。某些对象的列表可以稍后调用,并进行修改。将对象投射到另一个特定的对象,然后修改它

SORRY,忘了发布实际的错误。当我尝试到类强制转换为类型值,我得到这个错误:

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); 
     } 
    } 

这里的价值类:

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

@OliverCharlesworth对不起,编辑OP。 –

+0

'列表值'...为什么要使用原始的'Value'?故意?什么是'list'这里'list.add(value);'?与'values'不同的列表? – Tom

回答

0

你的问题是,你试图将类的字段或类型转换为值,但那不是你想要做的,你想要的字段的值或实际数据并进行转换。

你可以得到一个场的像这样的价值(或数据):

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

我试过了,对象val每次都会出现空...不知道为什么 –

+0

@Devin我没有这个代码System.out.println(Test.class.getField(“hello”))的问题。 get(null));' – tim4242

+0

对象val每次都是空值。 –