私は次のクラスを持っています
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 は Boolean、Float、String などであるはずです。
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");
}
}
オブジェクトには、Boolean、Float、String なども含まれるはずです。
このコードの問題は
fields.get(i).setValue(values.get(i));
構文チェッカーは、values.get(i) をキャストする必要があることを教えてくれます (? 私は疑う)。どうすればいいですか?私はすでに valueClass.cast(values.get(i)) を試しましたが、うまくいきませんでした。