Javaのジェネリックに関する基本的な質問があります。 私は別のクラスTによってインスタンス化されるクラスXを持っています。使用されるすべてのクラスTにmethodOfT()というメソッドがあります。しかし、JavaはobjとmethodOfT()を知らないのでコンパイラの時間エラーが発生します。Java汎用コールタイプの変数タイプ
この問題を回避するために、私は別のクラスXSuperを定義しました。 Xをインスタンス化するすべてのクラスは、このXSuperクラスを拡張します。これはコンパイル時のエラーを取り除き、私が望むものを達成できるようにします。
public abstract class XSuper
{
public abstract void methodOfT();
}
public class UserOfX extends XSuper
{
X<UserOfX> objX = new X<UserOfX>();
public void methodOfT()
{
}
}
しかし、私はこのことをよりクリーンな方法で行いたいと思っています。クラスUserOfXを別のクラスから派生させたいからです。もう一つの問題は、私はとmethodOfT()メソッドを定義したいことをされた - この場合
public methodOfT(T objOfT)
{
}
、上記の解決策は失敗します。誰か助けてもらえますか?
ありがとう:あなたの追加要件を考えると(あなたはまた、クラスの代わりにインターフェイスを使用することができますが、それはあまりエレガントです)
、我々はトンこのコードいくつかのより多くを変更する必要がありますつもりです。しかし、私がこのメソッドを 'obj.MethodOfT(T anotherObjOfT)' – Raj
@RajTendulkarにしたい場合、この解決策は失敗すると言っていたので、私はそのインターフェースを汎用的にする必要があります。 –
これは役に立ちます!どうもありがとうございました。 – Raj