[解決済み] Class<> の型引数を推論できない
2022-02-28 14:48:10
質問
私のソートテストアプリでコンパレータを使用していて問題があります。 メッセージが表示されました。
スレッドで例外発生 "main" java.lang.Error: 未解決のコンパイル問題です。 Sorter<> の型引数を推論できません。
そのコードに対して
public class TestClass {
public static void main(String[] args){
Sorter<Person> idSorter = new Sorter<>(new idComparator());
.
.
.
}
}
ソーター(Sorter)クラス。
public class Sorter<T extends Comparable> {
Comparator<T> comparator;
int switches = 0,
compares = 0;
public Sorter(Comparator<T> comparator) {
this.comparator = comparator;
}
public Sorter() {
this.comparator = null;
}
protected int compare(T first, T second) {
if (this.comparator == null) {
int cmp = first.compareTo(second);
this.compares++;
return cmp;
}
比較可能なインターフェース。
public interface Comparable {
public int compareTo(Comparable other);
}
idComparator クラスです。
public class idComparator implements Comparator<Integer> {
public int compare(Integer first, Integer second) {
return first > second? 1: first == second? 0: 1;
}
}
Comparator インターフェース。
public interface Comparator<T> {
int compare(T first, T second);
}
このような使い方のどこがいけないのでしょうか?どうすればもっと良くなるのでしょうか?
解決方法は?
この行の中に
Sorter<Person> idSorter = new Sorter<>(new idComparator());
idComparator
インプリメント
Comparator<Integer>
ということで
T
に対して
Sorter
は
Integer
しかし、あなたの宣言は
とは
はコンパイラに
T
は
Person
というメッセージが表示され、コンパイラは混乱します。
修正候補 :
Sorter<Integer> idSorter = new Sorter<>(new idComparator());
が、コメントで何人かが言っているように、それは 変 というのは、ある整数値に基づいて人を並べ替えることです。
また、注意してください。
-
a
return
の文は、(おそらく)欠落しています。Sorter#compare
-
idComparator
の名前は大文字で始まる必要があります。IdComparator
-
をどうしても使いたい場合は
Comparable
/Comparator
を使用する場合は、他の名前を付けてください (MyComparable
?)as is
javaのものと混同している。
関連
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] 汎用型Tのクラスインスタンスを取得する方法を教えてください。
-
[解決済み] 汎用クラスやメソッドのメンバからTの型を取得する方法
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] android.support.v4.app.FragmentActivity' で 'TAG' がプライベートアクセスされている。
-
[解決済み] Java UnknownFormatConversionException
-
[解決済み] java.lang.ClassNotFoundException: クラス com.ibm.db2.jcc.DB2Driver が Worklight プラットフォームまたはプロジェクトに見つかりませんでした。
-
[解決済み] JavaにおけるMouseListenerとMouseAdapterの違いについて
-
[解決済み] HTTP ステータス 500 - サーブレットクラス pkg.coreServlet のインスタンス化に失敗しました。
-
[解決済み] Java: getInstanceとStaticの比較
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について
-
[解決済み] x--やx++はここで何をするのですか?