Javaでは、ネストされたクラスはどちらでもよいしstatic
、そうでなくてもよい。それらがstatic
である場合、それらには包含インスタンスのポインターへの参照が含まれていません(これらは内部クラスとも呼ばれなくなり、ネストされたクラスと呼ばれます)。
static
参照が不要なときにネストされたクラスを作成し忘れると、ガベージコレクションやエスケープ分析で問題が発生する可能性があります。
匿名の内部クラスstatic
も作成できますか?または、コンパイラはこれを自動的に判断しますか(サブクラスがないため、可能です)。
たとえば、匿名コンパレータを作成する場合、外部への参照はほとんど必要ありません。
Collections.sort(list, new Comparator<String>(){
int compare(String a, String b){
return a.toUpperCase().compareTo(b.toUpperCase());
}
}
Collections.sort(list, String.CASE_INSENSITIVE_ORDER)
コレクションAPIが存在するためのJava 2以降の作品は、読んで...