ジェネリックスを使用して独自のリンクリストクラスをJavaで作成しようとしています。リンクリストは、私が作成した2つの異なるNodeクラスで動作するはずです。私は自分のリンクリストで使用されているノードクラスのメソッドを呼び出せるようにしたいが、明らかにそれをやろうとしている方法ではうまくいかない。各ノードクラスはすべて同じメソッド(およびメソッド名)を持ちますが、それぞれのメソッドは異なることを行います。これで私はいくつかの質問があります:ジェネリックスを使用してリンクリストを作成する方法
1)ジェネリック型変数の呼び出しメソッドに対する "回避策"(ある場合)とは何ですか?私の場合、私は自分のノードクラスのメソッドをリンクリストクラスから呼び出そうとしています。
2)私が定義した2つのノードクラスは、リンクリストに含めることができる唯一の2つのデータ型であることを確認するにはどうすればよいですか?
3)これについて完全に間違っていると思いますか?すなわち、私はこれを全く異なる方法で行うべきですか?
ここに、コードの簡略化されたバージョンがあります。
public class Node1 {
public int stuff1;
public Node1 nextNode;
Node1() {
this.nextNode = null;
}
public void doStuff(){
System.out.println("Node 1 did stuff");
}
}
public class Node2 {
public int stuff2;
public Node2 nextNode;
Node2() {
this.nextNode = null;
}
public void doStuff(){
System.out.println("Node 2 did other stuff");
}
}
public class LinkedList<T>{
public T first; // do I need to construct/instantiate this too?
public void doStuff() {
first.doStuff;
}
public static void main(String[] args){
LinkedList<Node1> node1 = new LinkedList<Node1>;
LinkedList<Node2> node2 = new LinkedList<Node2>;
node1.doStuff();
node2.doStuff();
}
}
ありがとうございます!あなたの具体的な例
node1とnode2を共通の抽象クラスに拡張する必要があるので、 'T extends abstractClass'のようなものでそのクラスだけを受け入れることができます – nhouser9
あなたの目的に合っていないと破棄します: 'Node'クラスの全てが必要な' Node'クラスであり、 'doStuff'メソッドは抽象クラスであり、具体的なサブクラスである' Node1'と 'Node2'では実装が異なります。あなたのリストクラスは 'public class LinkedList'と宣言できます。 –