Java编程:交通灯枚举与代理 ArrayList 实现计时

需积分: 11 15 下载量 186 浏览量 更新于2024-07-21 收藏 87KB DOC 举报
本文档主要关注于两个Java编程领域的知识点:枚举类型的设计与代理模式的应用。 **第一个知识点:交通灯枚举(enum)设计** 在提供的代码片段中,定义了一个名为`Lamp`的枚举类型,用于表示交通灯的状态。它包含三个状态:红灯(RED)、绿灯(GREEN)和黄灯(YELLOW)。枚举中定义了一个私有变量`next`,用于存储下一个灯的颜色,以及一个`nextLamp()`方法,该方法通过调用`valueOf()`方法返回下一个灯的枚举实例。这样设计的一个好处是,它提供了一种简单的方式来模拟交通灯的逻辑,即红灯之后是绿灯,绿灯之后是黄灯,黄灯之后又回到红灯。 **第二个知识点:代理模式的实现** 在`test1`类中,创建了一个`List`的代理,使用了Java的`Proxy`类和`InvocationHandler`接口。这个代理类实现了`List`接口,当调用`List`的方法时,首先记录下当前时间(`beginTime`),然后执行实际操作(`method.invoke(target,args)`),并记录下方法执行完毕的时间(`endTime`)。最后,输出执行时间和返回的结果。这样,我们可以计算出每个`List`方法的运行时间,如`add()`、`remove()`等操作。 具体来说,`proxy.add("nihaoa")`、`proxy.add("nihaoa")`、`proxy.add("nihaoa")`和`proxy.remove("nihaoa")`这些操作都会被代理对象捕获并计时,展示了代理模式如何在不改变原有接口的情况下添加额外功能。 **泛型应用示例** 在第三个代码片段中,`ArrayList`被创建为`Integer`类型的,这意味着它可以存储整数值。泛型允许我们创建具有特定元素类型的集合,这里的泛型参数`Integer`确保了列表中的元素都是整数类型,提供了类型安全性和更好的代码可读性。 总结起来,这份文档介绍了Java中的枚举类型在交通灯逻辑模拟中的应用,以及如何使用代理模式来测量方法执行时间。同时,展示了如何在ArrayList的基础上使用泛型来限制元素类型。这些都是Java编程中常见的实用技术,有助于理解和提高程序设计的灵活性和效率。
2014-06-23 上传
1.方法中的内部类能不能访问方法中的局部变量,为什么? 2.分析运行结果,说明原理。(没有分析结果不得分) import java.util.ArrayList; class Data { int val; } public class Test { public static void main(String args[]) { Data data = new Data(); ArrayList list = new ArrayList(); for (int i = 100; i < 103; i++) { data.val = i; list.add(data); } for (Data d : list) { System.out.println(d.val); } } } 3.编写一个类,在main方法中定义一个Map对象(采用泛型), * 加入若干个对象,然后遍历并打印出各元素的key和value。 4.编写一个类,在main方法中定义一个Map对象(采用泛型), * 加入若干个对象,然后遍历并打印出各元素的key和value。 5.定义一个文件输入流,调用read(byte[] b)方法将exercise.txt * 文件中的所有内容打印出来(byte数组的大小限制为5)。 6.存在一个JavaBean,它包含以下几种可能的属性: 1:boolean/Boolean 2:int/Integer 3:String 4:double/Double 属性名未知,现在要给这些属性设置默认值,以下是要求的默认值: String类型的默认值为字符串 www.itheima.com int/Integer类型的默认值为100 boolean/Boolean类型的默认值为true double/Double的默认值为0.01D. 只需要设置带有getXxx/isXxx/setXxx方法的属性,非JavaBean属性不设置,请用代码实现 7.有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常, * 在ClassA类中有一个方法a,请在这个方法中调用b,然后抛出异常。 * 在客户端有一个类为TestC,有一个方法为c ,请在这个方法中捕捉异常的信息。 * 完成这个例子,请说出java中针对异常的处理机制。 8.编写一个程序,获取10个1至20的随机数,要求随机数不能重复。 9.编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, * 然后打印出这个十进制整数对应的二进制形式。 * 这个程序要考虑输入的字符串不能转换成一个十进制整数的情况, * 并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。 * 提示:十进制数转二进制数的方式是用这个数除以2, * 余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2, * 这次得到的余数就是次低位,如此循环,直到被除数为0为止。 * 其实,只要明白了打印出一个十进制数的每一位的方式 * (不断除以10,得到的余数就分别是个位,十位,百位), * 就很容易理解十进制数转二进制数的这种方式。 10.有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。 * 问:最后剩下的是100人中的第几个人?