static
匿名内部クラスではなく、フィールドに状態を格納しないクラスのインスタンスにフィールドを使用することを好みます。sort
メソッド(または他の)が頻繁に呼び出される場合、メモリとGCの使用量を減らすためのこの良い習慣だと思います。しかし、私の同僚は、JIT がそれを最適化すると言って、この場合には匿名内部クラスを使用することを好みます。
class MyClass {
//non fields of class
/*access modifier*/ final static Comparator<MyClass> comparator = new Comparator<MyClass>(){
public compare(MyClass o1, MyClass o2){
//comparing logic
}
}
}
使用例(私が好む):
List<MyClass> list = ...;
Collection.sort(list, MyClass.comparator);
使用例 (私の同僚が好む):
List<MyClass> list = ...;
Collection.sort(list, new Comparator<MyClass>(){
public compare(MyClass o1, MyClass o2){
//comparing logic
}
});
1.最適化されたopenJDKで匿名内部クラスを使用していますか?
2.この場合の良い習慣を教えてください。