A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡志翔 中级黑马   /  2013-10-26 18:49  /  1172 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


张老师讲课的时候用枚举的valueOf的方法的时候接受一个参数,查阅API文档是接收2个参数,为什么张老师这里不报错?

1.png (14.78 KB, 下载次数: 16)

1.png

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
你好,你查询的java.lang.Enum类中的说明吧?java.lang.Enum的说明文档中没有valueOf(String value)这个方法,然后我通过反射判断出Enum类中确实没有该参数的方法,代码如下:try {
                        Method enummethod = Enum.class.getMethod("valueOf", String.class);
                } catch (SecurityException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (NoSuchMethodException e) {
                        // TODO Auto-generated catch block
                        System.out.println("没有该方法!!");
                }
我们知道Enum是java中所有枚举的基类,既然Enum中没valueOf(String value)的方法,那么应该在子类当中吧,这里说的就是Lamp,我使用反射判断出Lamp类中有valueOf(String value)个方法,代码如下:
try {
                        Method enummethod = TrafficLamp.class.getMethod("valueOf", String.class);
                        System.out.println("执行valueOf(String value)方法:"+enummethod.invoke(null,"GREEN"));
                } catch (SecurityException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (NoSuchMethodException e) {
                        // TODO Auto-generated catch block
                        System.out.println("没有该方法!!");
                }
                catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马