使用接口+匿名内部类
/** * 定义一个任务接口 */ interface Task { void execute(); // 要执行的任务方法 } /** * 计时器类 - 负责计算方法执行时间 */ class Timer { /** * 计算任务执行时间(秒) * @param task 要执行的任务(使用匿名内部类传入) * @return 执行时间(秒) */ public static double calculateTime(Task task) { long startTime = System.nanoTime(); // 开始时间(纳秒) task.execute(); // 执行任务 long endTime = System.nanoTime(); // 结束时间(纳秒) double duration = (endTime - startTime) / 1_000_000_000.0; // 转换为秒 return duration; } } /** * 主程序 - 演示匿名内部类的使用 */ public class Homework1 { public static void main(String[] args) { // 场景1:使用匿名内部类计算循环执行时间 double time1 = Timer.calculateTime(new Task() { @Override public void execute() { // 要计时的方法/代码块 for (int i = 0; i < 10000000; i++) { Math.sqrt(i); // 模拟耗时操作 } } }); System.out.printf("循环1千万次计算平方根耗时:%.4f 秒\n", time1); // 场景2:使用匿名内部类计算睡眠时间 double time2 = Timer.calculateTime(new Task() { @Override public void execute() { try { Thread.sleep(2000); // 模拟耗时操作:睡眠2秒 } catch (InterruptedException e) { e.printStackTrace(); } } }); System.out.printf("Thread.sleep(2000) 实际耗时:%.4f 秒\n", time2); // 场景3:使用匿名内部类计算排序时间 double time3 = Timer.calculateTime(new Task() { @Override public void execute() { int[] arr = new int[100000]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 100000); } java.util.Arrays.sort(arr); // 排序 } }); System.out.printf("排序10万个随机数耗时:%.4f 秒\n", time3); } }