プライマリpojoキーを表すJavaで汎用Keyクラスを設計しようとしています。
値は、BigInteger、String、Uuidなどのさまざまなタイプにすることができます。私はそのようなクラスを実装するための最良のオプションを探しています。私の現在の実装は次のようになります。
誰かがより正確な実装を手伝ってくれたり、現在の実装の問題を特定したりできますか?私はまだequalsメソッドを実装していません。どんなポインタでも大歓迎です。
このクラスはGWT互換である必要があります。
@SuppressWarnings("serial")
@GwtCompatible
public class Key<T extends Serializable> implements Serializable {
public enum KeyType {
BigInt, Uuid, String ;
}
private final T keyValue ;
private final KeyType keyType ;
Key() {
keyValue = null;
keyType = null;
}
public Key(T value){
this.keyValue = value ;
this.keyType = determineKeyType(value);
}
/**
* @return
*/
private KeyType determineKeyType(Object value) {
if ( isValueUuid(value))
return KeyType.Uuid ;
else if (value instanceof BigInteger)
return KeyType.BigInt ;
else
return KeyType.String;
}
/**
* @param value
* @return
*/
private boolean isValueUuid(Object value) {
// TODO Auto-generated method stub
return false;
}
public Key(T val, KeyType tp){
this.keyValue = val ;
this.keyType = tp;
}
public KeyType getKeyType(){
return keyType ;
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
public T getKeyValue(){
return this.keyValue ;
}
}