私がこのようなことをしようとしている場合:
List<?> unknownList = new ArrayList<>();
その後、コードは正常にコンパイルおよび実行されますが、どのタイプがArrayList
作成されたのでしょうか?
そして、この行の後、私がこのようにした場合:
unknownList.add("str"); //compilation error
コンパイルエラーが発生します:
error: no suitable method found for add(String)
unList.add("str");
^
method List.add(int,CAP#1) is not applicable
(actual and formal argument lists differ in length)
method List.add(CAP#1) is not applicable
(actual argument String cannot be converted to CAP#1 by method invocation conversion)
method Collection.add(CAP#1) is not applicable
(actual argument String cannot be converted to CAP#1 by method invocation conversion)
where CAP#1 is a fresh type-variable:
CAP#1 extends Object from capture of ?
このエラーは何ですか?ワイルドカードでダイヤモンド演算子を使用するのは適切ですか? はいの場合、どこで???