/*
要比较两个对象是否相等,需要调用object类中equals()方法,如有两对象A,B,但单纯调用equals()方法,如A.equals(B),不论两对象的值是否相等都会返回false,因为此处的equals()调用的是object类中的方法,只提供相当于地址的比较。这样,我们就需要在子类中重写该方法,来实现我们的需求。
*/
public static void main(String[] args) {
int[] arr = {100, 200, 300, 500, 800, 321, 123, -50, -55};
Printer.print(arr);
Printer.print(arr, new EvenFilter());
// 使用匿名内部类形式, 定义一个过滤器, 打印出大于300的数
}
}
class Printer { // 打印机
public static void print(int[] arr) { // 打印int[]中的元素, 打印成一行, 用空格分隔每个元素
for (int i = 0; i < arr.length; i++)
System.out.print(arr[i] + " ");
System.out.println();
}
public static void print(int[] arr, IntFilter filter) {
for (int i = 0; i < arr.length; i++) // 循环遍历数组
if (filter.accept(arr[i])) // 把每一个数传入过滤器, 判断是否要打印
System.out.print(arr[i] + " ");
System.out.println();
}
}
interface IntFilter { // 过滤器
boolean accept(int x); // 接收一个int, 返回一个boolean
}
class OddFilter implements IntFilter { // 奇数过滤器
public boolean accept(int x) {
return x % 2 != 0;
}
}
class EvenFilter implements IntFilter { // 偶数过滤器
public boolean accept(int x) {
return x % 2 == 0;
}
}
---------------------- android培训、 java培训、期待与您交流! ----------------------