Comparator其实是一个策略类的模式,在java中如果需要将方法1作为参数传递给方法2那么在没有出现lambda表达式的时候,其实还有一种方式可以实现,那就是使用接口的方式,如比较器接口Comparator 如:
class Test { public String[] sort(String[] strArrys) { Arrays.sort(strArrys, new Comparator() { @Override public int compare(String o1, String o2) { return o1.length() - o2.length(); } }); return strArrys; }}
以这种方式使用虐名内部类时,将会在每次执行调用的时候创建一个新的实例,如果sort方法被重复的执行,考虑将对象存储到静态的final域里,并重用它,如:
class Test { private static class StrComparator implements Comparator, Serializable { @Override public int compare(String o1, String o2) { return o1.length() - o2.length(); } } public static final Comparator STRING_COMPARATOR = new StrComparator(); public String[] sort(String[] strArrys) { Arrays.sort(strArrys, STRING_COMPARATOR); return strArrys; }}