1.
定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法
;
例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。
publicenum
Lamp {
RED
("GREEN"),
GREEN
("YELLOW"),
YELLOW
("RED");
private
String next;
private
Lamp(String next){
this
.next = next;
}
public
Lamp nextLamp(){
return
Lamp.
valueOf
(next);
}
}
2
、写一个
ArrayList
类的代理,实现和
ArrayList
中完全相同的功能,并可以计算每个方法运
行的时间。
publicclass
test1 {
publicstaticvoid
main(String[] args) {
final
ArrayList target =
new
ArrayList();
List proxy = (List)Proxy.
newProxyInstance
(
List.
class
.getClassLoader(),
ArrayList.
class
.getInterfaces(),
new
InvocationHandler() {
@Override
public
Object invoke(Object proxy, Method method, Object[] args)
throws
Throwable {
long
beginTime = System.
currentTimeMillis
();
Thread.
sleep
(10);
Object reVal = method.invoke(target, args);
long
endTime = System.
currentTimeMillis
();
System.
out
.println(method.getName()+"
runing
time
is
"+(endTime-beginTime));
return
reVal;
}
});
proxy.add("nihaoa");
proxy.add("nihaoa");
proxy.add("nihaoa");
proxy.remove("nihaoa");