这个里面的枚举类型没有实现接口,我在枚举常量后面加了{}并在其中写了方法fun();这样的方法怎么调用呢? 望大神指点指点!!!
.net码农飘过
Method m=MyEnum.A.getMethod("fun",null);
m.invoke(MyEnum.A);
只能反射吗? 直接调用能调出来吗?
@梦再笑: 那你那个方法要在MyEnum下而不是你这个A下了。
@Daniel Cai: 哦,那意思就是说A下写的是不能直接调出来的,只有枚举类中的成员方法才能直接调用出来是吗?
@梦再笑: 恩
@Daniel Cai: 但是我如果用这个枚举类型实现一个接口,然后把那个接口里的抽象方法实现在A{}下,这样就可以直接调用了,这又是怎么一回事啊?
@梦再笑: 你这样不就相当于在MyEnum下加方法了么?
interface SomeInterface{
void Dummy();
}
enum MyEnum implements: SomeInterface{
A{
public void Dummy()...
};
}
----------------
enum MyEnum{
public void Dummy()...
}
@Daniel Cai: 相当于???..... 我咋看着有点懵呢~! 这样怎么就相当于写在没写在枚举类型里了呢?
这个明明就是在A{} 里的么? 你看我下面写这个~!
如果相当于写在了MyEnum中,B就不应该报错,这时B报错了,让我在B里面再次实现fun()方法。但如果我直接在了MyEnum中实现的话,A,B都可以调用。 我感觉就是当我写在MyEnum中实现的话就是公用的,但是我在某一个枚举常量中实现的话,只能用对应的枚举常量调用,这时就好像是该枚举常量私有的一样~!不知道有没有这个规定?望大神指点指点~!
@梦再笑: 我所谓的相当于是针对你前面那个问题说的,当然不能说等于了。
这个地方B同样也要实现这个接口啊。
@Daniel Cai: 那在A{}中实现方法fun()和在MyEnum中实现fun() 有什么区别呢?
@梦再笑: 说实话,我问了我们这边一个java大牛,从来没像你问题那样用过。
区别的话一个是属于MyEnum.A这个对象,一个属于MyEnum对象
@Daniel Cai: 谢谢 谢谢 真的非常感谢了~! 花了你这么长时间~!