インデックスを取得し、インデックスが有効になるまで要素をリストに追加し、そのインデックスの値を返す Java リストを使用して遅延読み込みメソッドを作成しようとしています。
たとえば、次のような List があるとし[0, 1, 2, 3]
ます。それを使用してメソッドを呼び出し、インデックス 1 を渡すと、List を変更せずに 1 を返す必要があります。メソッドを呼び出してインデックス 5 を渡すと、0 (デフォルトの整数値) が返され、リストは次のようになります[0, 1, 2, 3, 0, 0]
。
最初は非常に簡単に実装できるように思えますが、 のようにリストを渡そうとすると問題が発生しList<List<String>>
ます。リストをインスタンス化できないことはわかっているので、ArrayList を作成しようとしましたが、うまくいきません。
これが私のメソッドの現在の化身です
protected <T> T getOrCreateAt(int index, List<T> list, Class<T> elementClass) {
while (list.size() < index + 1) {
try {
list.add(elementClass.newInstance());
} catch (InstantiationException e) {
e.printStackTrace();
System.exit(1);
} catch (IllegalAccessException e) {
e.printStackTrace();
System.exit(1);
}
}
return list.get(index);
}
ここに私がそれを呼ぶ場所があります
List<List<String>> solutionText = new ArrayList<List<String>>();
for (Node node : solution) {
List<String> row = getOrCreateAt(node.rowNo, solutionText, ArrayList.class);
getOrCreateAt(node.colNo, row, String.class);
row.set(node.colNo, String.valueOf(node.cellNo));
}
getOrCreateAt への 2 番目の呼び出しは機能しますが、最初の呼び出しはコンパイルされません。
インターフェイスと抽象クラスで遅延読み込みメソッドを機能させるにはどうすればよいですか?