にわかJava使いが答えてみる。
Javaの良い設問を募集 — ありえるえりあ[Q1]次のコードの問題点を述べよ。その理由も述べよ。
ArrayList<String> list = new ArrayList<String>();
出題の意図としては、
List<String> list = new ArrayList<String>();
と書き直させたいのでしょうか?これは、JavaのListはaddして良いんだとわかるまで、しょっちゅうやってました*1。これがなんでダメなのかはいまいち理解できてなかったりします(プログラミングの習慣としては、それなりに身についてきてますけど)。
Java : 問題 - lethevert is a programmer次のコードで何が問題かを答えよ
void f (List l) { for (int i=0; i<l.size(); ++i) { g(l.get(i)); } }
これは
void f (List<T> l) { for (T x : l) { g(x); } }
かなぁ。Objectが要素なコレクションは使いたくないけど、wildcard周りを全然理解していないので、genericsはgenericsで怖かったりします。大体直感的に使える、という程度の理解だから、いつかはまりそうだ。
よく考えてみたら、上のやつをArrayList
*1:MLとかの感覚だと、Listの操作はhdとtlだけですので