首页 新闻 会员 周边

望java大神指点指点~! 这样的方法能不能调出来?

0
悬赏园豆:5 [已解决问题] 解决于 2016-11-25 15:18

这个里面的枚举类型没有实现接口,我在枚举常量后面加了{}并在其中写了方法fun();这样的方法怎么调用呢?  望大神指点指点!!!

梦再笑的主页 梦再笑 | 初学一级 | 园豆:55
提问于:2016-11-25 13:47
< >
分享
最佳答案
0

.net码农飘过

Method m=MyEnum.A.getMethod("fun",null);

m.invoke(MyEnum.A);

收获园豆:5
Daniel Cai | 专家六级 |园豆:10424 | 2016-11-25 14:18

只能反射吗?  直接调用能调出来吗?

梦再笑 | 园豆:55 (初学一级) | 2016-11-25 14:33

@梦再笑: 那你那个方法要在MyEnum下而不是你这个A下了。

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-25 14:35

@Daniel Cai: 哦,那意思就是说A下写的是不能直接调出来的,只有枚举类中的成员方法才能直接调用出来是吗?

梦再笑 | 园豆:55 (初学一级) | 2016-11-25 14:37

@梦再笑: 恩

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-25 14:38

@Daniel Cai: 但是我如果用这个枚举类型实现一个接口,然后把那个接口里的抽象方法实现在A{}下,这样就可以直接调用了,这又是怎么一回事啊?

梦再笑 | 园豆:55 (初学一级) | 2016-11-25 14:40

@梦再笑: 你这样不就相当于在MyEnum下加方法了么?

interface SomeInterface{

 void Dummy();

}

enum MyEnum implements: SomeInterface{

A{

  public void Dummy()...

};

}

----------------

enum MyEnum{

 public void Dummy()...

}

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-25 15:24

@Daniel Cai: 相当于???.....   我咋看着有点懵呢~!    这样怎么就相当于写在没写在枚举类型里了呢?

这个明明就是在A{} 里的么? 你看我下面写这个~!

如果相当于写在了MyEnum中,B就不应该报错,这时B报错了,让我在B里面再次实现fun()方法。但如果我直接在了MyEnum中实现的话,A,B都可以调用。  我感觉就是当我写在MyEnum中实现的话就是公用的,但是我在某一个枚举常量中实现的话,只能用对应的枚举常量调用,这时就好像是该枚举常量私有的一样~!不知道有没有这个规定?望大神指点指点~!

梦再笑 | 园豆:55 (初学一级) | 2016-11-25 18:24

@梦再笑: 我所谓的相当于是针对你前面那个问题说的,当然不能说等于了。

这个地方B同样也要实现这个接口啊。

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-25 18:25

@Daniel Cai: 那在A{}中实现方法fun()和在MyEnum中实现fun() 有什么区别呢?

梦再笑 | 园豆:55 (初学一级) | 2016-11-25 18:27

@梦再笑: 说实话,我问了我们这边一个java大牛,从来没像你问题那样用过。

区别的话一个是属于MyEnum.A这个对象,一个属于MyEnum对象

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-25 20:55

@Daniel Cai: 谢谢 谢谢  真的非常感谢了~!  花了你这么长时间~! 

梦再笑 | 园豆:55 (初学一级) | 2016-11-25 21:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册