niz*_*ize 1 java sorting inner-classes comparator
我有这个班有内班
public class A {
public class NameComparator implements Comparator<A> {
@Override
public int compare(A o1, A o2) {
return o1.name.compareToIgnoreCase(o2.name);
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
我想从另一个类C(它驻留在除A之外的另一个包)中访问此NameComparator类.
示例(来自C):
Collections.sort(aArrayList,A.new NameComparator());
这不起作用.我应该移动内部类NameComparator,以便它不包含在类A中并将其重命名为类似于ANameComparator的类吗?它们是如此紧密相关,所以不将这个功能放在A类中感觉很尴尬.
如果你想使用这样的代码,你需要让内部类静态:
public class A {
public static class NameComparator implements Comparator<A> {
@Override
public int compare(A o1, A o2) {
return o1.name.compareToIgnoreCase(o2.name);
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
为什么?因为如果不将内部类标记为静态,则它仅对外部类的实例有效.
您必须像这样实例化比较器以在zour用例中使用:
Collections.sort(aArrayList,new A.NameComparator());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1999 次 |
最近记录: |