本帖最后由 doitforyou 于 2013-12-30 01:54 编辑
注解中加入了枚举属性,然后在调用枚举属性的时候发现一个小问题,不是很明白,希望大家探讨下,解我之惑,谢谢了。
代码如下:
枚举TrafficLamp,带有抽象方法nextLamp()
enum TrafficLamp{
RED{
public TrafficLamp nextLamp(){ return GREEN; }
},
GREEN{
public TrafficLamp nextLamp(){ return RED; }
};
public abstract TrafficLamp nextLamp();
}
然后定义了一个注解类,中间加上了枚举属性next返回TrafficLamp类型,在main函数中调用的时候如下:
MyAnnotation ma = MyAnnotation.class.getAnnotation(MyAnnotation.class);
ma.next().nextLamp();调用的时候出现了问题,问题描述如下:
Exception in thread "main" java.lang.IllegalAccessError: tried to access class cn.interview.test.TrafficLamp from class $Proxy3
at $Proxy3.next(Unknown Source)
当我把枚举权限改为public时,可以正常运行,问题这时候就出现了,默认访问权限应该是包内,但这时候却访问失败。
我根据报错信息猜测到一个原因:注解中调用方法的时候可能使用了代理,而代理不属于当前包,是访问不到枚举的,
但是我找了很久没找到更具体的资料,希望各位同学们帮助下,深入一些探讨原因。
技术分就当做随机奖励,因为我不知道怎么根据答案奖励分数。
|