互換性のない型です。ArrayList<ArrayList<Integer>>はList<List<Integer>>に変換できない。
2022-02-07 13:29:39
ArrayList<ArrayList<Integer>>() new list<List<Integer>> オブジェクトを使用しようとすると、このエラーが発生します。
List<List<Integer>> = new ArrayList<ArrayList<Integer>>();
おそらく、2つ目のArrayListをListに変更することでエラーがなくなることがわかると思いますが、その根拠は何でしょうか?
これは、調べた結果、汎用アプリケーションによくある落とし穴です。
ジェネリック、継承、サブタイプ
https://docs.oracle.com/javase/tutorial/java/generics/inheritance.html
1. まず、AがBである場合、AをBに代入することができる。
Object someObject = new Object();
Integer someInteger = new Integer(10);
someObject = someInteger; // OK
IntegerはObjectを継承しており、そのサブタイプなので、このように代入しても問題はない、汎用的な型です。
2. IntegerはNumberでもあり、DoubleはNumberでもあるので、以下のようなことも可能です。
public void someMethod(Number n) { /* ... */ }
someMethod(new Integer(10)); // OK
someMethod(new Double(10.1)); // OK
ジェネリックも使用可能です。
Box<Number> box = new Box<Number>();
box.add(new Integer(10)); // OK
box.add(new Double(10.1)); // OK
3. 以下はそのハイライトです。
public void boxTest(Box<Number> n) { /* ... */ }
その場合、Box<Integer> や Box<Double> を渡すことができるのでしょうか?
答えは「いいえ」です。
IntegerはNumberのサブクラスです。
DoubleもNumberのサブクラスですが
Box<Integer>および
Box<Double> は Box<Integer> のサブクラスではなく、並列に配置され、どちらも Object のサブクラスである。
<スパン
<スパン
<スパン
<スパン
<スパン
<スパン
関連
-
アクセス制限です。タイプ 'BASE64Decoder' は API ではない (必要なライブラリ xxx の制限)
-
Map<String,Boolean> 型をインスタンス化できません。
-
Javaでエラーが発生しました。非静的フィールドへの静的な参照を作成できません。
-
Springの構成でエラーなくIntelliJのアイデア、アセンブリオブジェクトは、自動配線できませんでした。
-
Error: missing `server' JVM at `C:\Program Files (x86)\Javajre1.8.0_151bin server╱jvm.dll'.
-
XXX型を囲むインスタンスはアクセスできない問題をJavaで解決
-
無効なカラム名
-
HttpServletRequest型ではgetServletContext()メソッドは未定義です。
-
既に使用されているアドレス:JVM_Bind (ポート競合)
-
JIRA REST API 呼び出し方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
List<Integer> 型をインスタンス化できません。
-
SLF4J: クラスパスが複数の SLF4J バインディングを含んでいる Error
-
Java の例外解決。コンストラクタの呼び出しはコンストラクタ内の最初のステートメントでなければならない
-
JAVAMail TLS配信の注意点
-
mvn -v error: main class not found or couldn't be loaded org.codehaus.plexus.classworlds.launcher.
-
Java 文字クラスとメソッド
-
java にリソースリークがある: 'XXX' は決して閉じられない ソリューション
-
Javaで未処理の例外が発生する理由
-
トークンに関する構文エラー、代わりに AnnotationName が期待される 構文エラー
-
org.apache.tools.zip を使用した Zip 圧縮・解凍