以下に示すように。クラスの説明から明らかなように、任意のSerializable型にバインドできるPropertyという名前のクラスを作成しています。
T
これで、プロパティの値は、コンパイル中に型になるように自動バインドされます。
実行時に値のオブジェクトを Class getType()
返す必要があるメソッドを実装したい、つまりClass
Property<String> p = new Property<String>();
Class<String> cl = p.getType();
ここでは、clがString.classであることを期待しています。もちろん、1つの方法は次のとおりです。
return value == null ? null : value.getClass();
問題は、返される型に反映されず、生の型のClass
オブジェクトを返すことです。理想的にはタイプにしたいClass<String>
public class Property<T extends Serializable> implements Serializable {
private T value = null ;
private String name = null ;
private boolean dirty = false ;
private Entity parent = null ;
public Class getType() {
// Here I want to determine the type of T that this object is bound to ?
return class;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isDirty() {
return dirty;
}
public void setDirty(boolean dirty) {
this.dirty = dirty;
}
public Entity getParent() {
return parent;
}
public void setParent(Entity parent) {
this.parent = parent;
}
}