私はコードを改良して、特にGenericクラスを使用する方法を改善したいと思います。私は私のエンティティIDのみ1時間の代わりのようなサービスでGenericEntityで1つずつのクラスを指定したいJavaは、constまたは静的メソッドを持つ汎用クラスのparamを定義します。
GenericEntity<T extends Serializable>{
protected T id;
public T getId(){ return id;};
...
}
public class A extends GenericEntity<Integer>{
...
}
public interface IService<T extends GenericEntity, T extends Serializable>{
...
}
public class AService extends IService<A,Integer>{
...
}
:私のプロジェクトで は、私はfolowingのような約30のクラスがあります。
public class A extends GenericEntity<getIdType()>{
public final static Class getIdType(){
return Integer.class;
}
}
public class AService extends IService<A,A.getIdType()>{
...
}
私はそれがうまくいかないことを知っていますが、私はそれを行う方法があると思っています。 ご協力いただきありがとうございます。
class GenericEntity<T extends Serializable>{
protected T id;
public T getId(){ return id;};
}
// THESE ARE UNNECESSARY as far as I can tell
class A extends GenericEntity<Integer>{ }
class B extends GenericEntity<Long>{ }
// where U matches the generic type of GenericEntity<?>
interface IService<T extends GenericEntity<?>, U extends Serializable>{ }
class AService extends IService<A, Integer>{ }
class BService extends IService<B, Long>{ }
あなたがこれを行うことができます:代わりの
なぜそれをしたいですか? 'AService'を宣言すると、' A'クラスとそのID型の両方が分かります。 – daniu
'IService
>' ...そして、 'AServiceはIServiceを実装していますか? –
user2478398
私はいつか、私はそれを行うために約60の変更を持つ整数の代わりにロングを使用する必要がある場合はしたい。 私もId型が必要な単体テストがあります – ScorprocS