匿名内部类的使用场景
// 函数式接口(统一执行任务)
interface Task {
void run();
}
public class TimeCountDemo {
// 统计耗时工具方法
public static long calculateRunTime(Task task) {
long start = System.currentTimeMillis();
// 执行传入的代码(匿名内部类实现)
task.run();
long end = System.currentTimeMillis();
return end - start;
}
public static void main(String[] args) {
// 1. 测试循环代码耗时(匿名内部类写法)
long time1 = calculateRunTime(new Task() {
@Override
public void run() {
int sum = 0;
for (int i = 0; i < 1000000; i++) {
sum += i;
}
System.out.println("循环计算完成");
}
});
System.out.println("循环执行耗时:" + time1 + " 毫秒 = " + time1/1000.0 + " 秒");
// 2. 测试质数计算(复用工具)
long time2 = calculateRunTime(new Task() {
@Override
public void run() {
printPrime(200);
}
});
System.out.println("质数计算耗时:" + time2 + " 毫秒 = " + time2/1000.0 + " 秒");
}
// 质数方法(给下面作业复用)
public static void printPrime(int max) {
for (int i = 2; i <= max; i++) {
boolean flag = true;
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
flag = false;
break;
}
}
if (flag) System.out.print(i + " ");
}
System.out.println();
}
}

浙公网安备 33010602011771号