現在、一般的なデータ型のバイナリ検索ツリーをモデル化しようとしています。私は最終的には文字列値を読み込み、それらをバイナリツリーに挿入することになり、Nodezクラスの文字列宣言になります。 Nodezクラスは、検索ツリーに渡すノードを宣言するために定義したクラスです。文字列の値は、このクラスの属性になります。 BSTreeは、次のように定義されたクラスに基づいています。互換性のない型:NodeをComparableに変換できません(パラメータとして渡す場合)
public class BSTree<E extends Comparable<E>> implements BSTreeAPI<E>
私の問題はコードのメインブロックにあります。このエラーは、Nodezクラスのインスタンスを挿入しようとしたときに発生します。 「互換性のないタイプ:NodezをComparableに変換できません」
これをデバッグしようとしましたが、ジェネリックではあまり良くありませんでしたか?
お願いします。ありがとう!これは、あなたがそれはあなたがあなたのNodezクラスのComparible実装する必要が機能するようにする方法であれば
package twotreesanalyzer;
import java.io.IOException;
import java.io.PrintStream;
import java.util.function.Function;
public class TwoTreesAnalyzer
{
public static class Nodez <E extends Comparable<E>> {
public String x;
public E node;
public String get(){
return x;
}
}
public static void main(String[] args) throws AVLTreeException, BSTreeException, IOException
{
Function<String, PrintStream> printUpperCase = x -> System.out.printf("%S", x);
BSTree bstTest = new BSTree();
Nodez e1 = new Nodez();
e1.x = "fresh";
bstTest.insert(e1);
System.out.println(bstTest.inTree(e1.get()));
}
}
とどのようにクラスを ' Nodez'のように見える?それは同等ですか?ちなみに、ちょうどおもちゃプロジェクトであっても、クラス/メソッド/オブジェクトに良い名前を付けることは良い考えです! – alfasin
右。 Nodezはメインの上に宣言されています。 Comparableを実装すると、nodezは抽象メソッドではなく、抽象メソッドcompareTo(E)をオーバーライドしないことを返します。 – boppa