在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)
自Java 2读取以来就起作用,因为Collection API存在……