我有下面的类Java泛型铸造<?>
public class DBField<T>
{
protected String fieldName;
protected FieldConverter c;
protected T value;
protected DataObject dataObject;
public T getValue()
{
return value;
}
public void setValue(T value)
{
this.value = value;
}
public DBField(DataObject dataObject, String fieldName, FieldConverter c)
{
this.fieldName = fieldName;
this.c = c;
this.dataObject = dataObject;
}
}
T被认为是布尔型,浮点,字符串等
protected void ValuesToFields(List<Object> values, List<DBField<?>> fields) throws Exception
{
if (values.size() != fields.size())
throw new Exception("Length does not match.");
for (int i = 0; i < values.size(); i++)
{
Class valueClass = values.get(i).getClass();
Class fieldClass = fields.get(i).getValue().getClass();
if (valueClass.equals(fieldClass))
{
fields.get(i).setValue(values.get(i));
}
else
throw new Exception("type mismatch");
}
}
对象也应该包含布尔,浮点数,字符串等
这段代码的问题是
fields.get(i).setValue(values.get(i));
语法检查器告诉我,我需要将values.get(i)(to?我猜测)。我该怎么做呢?我已经尝试过valueClass.cast(values.get(i)),但没有运气。
这将如何帮助?只要在该线之前放置一个if就不会解决这条线没有被修改的错误。问题是setValue需要布尔值,字符串等,而values.get(i)是一个对象。 – cdbeelala89
我的意思是用你的'if'替换我的。我认为这可能是Syntax检查器的一个问题,即检查两个类彼此相等是不够的。 – EMMERICH