我有下面的類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