問題
Javaジェネリックを使用して、クラスを同様のメソッドに置き換えようとしています。私が見つけたすべての例は単純な例をカバーしていますが、Java Generics がこのように使用されることを意図しているかどうかはわかりません。
2 つの親クラスと、ほぼ同じメソッドを持つ 2 つの子クラスがあります。両方の親クラスも異なるクラスから派生します。最終的には、コードの 1 つのブロックを使用して親クラスの 1 つを作成および操作し、次にその子クラスを多くの switch ステートメントや重複コードを使用したフロー制御なしで作成および操作できるようにしたいと考えています。
これは、構文であろうとジェネリックの機能ではないことであろうと、まだこの方法で動作させることができていませんが、私が念頭に置いていたことです。
親クラス
public class FooParent
{
private FooChild fooChild;
public FooChild getChild()
{
return fooChild;
}
}
public class BarParent
{
private BarChild barChild;
public BarChild getChild()
{
return barChild;
}
}
子クラス
public class FooChild
{
public void print()
{
System.out.println("I'm a foo child");
}
}
public class BarChild
{
public void print()
{
System.out.println("I'm a bar child");
}
}
ジェネリック クラス
public class GenericParent<T>
{
private T self;
public GenericParent(T self)
{
this.self = self;
}
public GenericChild getChild()
{
return new GenericChild(self.getChild());
}
}
public class GenericChild<T>
{
private T self;
public GenericChild(T self)
{
this.self = self;
}
public void print()
{
self.print();
}
}
どのように使いたいか
public static void main(String args[])
{
GenericParent parent;
// Only the initialization of the parent variable needs specialized code
switch(args[0])
{
case "foo":
parent = new GenericParent(new FooParent());
break;
case "bar":
parent = new GenericParent(new BarParent());
break;
}
// From here on out, it's all generic
parent.getChild().print();
}
使用法と望ましい出力
java genericExample foo
> I'm a foo child
java genericExample bar
> I'm a bar child
最終質問
「子」と「親」は、実際には継承されていないことを知っているため、誤称かもしれませんが、結論として、1 つのクラスは特定のメソッドで「子」を返します。したがって、これは実際にはこの方法では解決できない可能性がある問題の多くのコードですが、うまくいけば、これに答えていただけます。
- これは Java Generics で達成できることですか?
- そうでない場合、Java でこの問題の解決策はありますか?
ありがとう!
編集
私の「Foo」と「Bar」クラスは編集できません。私の最終的な質問は、共通の親クラスを使用せずに、いずれかのクラスの 1 つのインスタンスを単一の変数に格納できますか?