Enum中ValueOf方法参数为什么只能是枚举类型.class的形式

        Class clasz = Constants.Constants_A.getDeclaringClass();
        Constants con = Enum.valueOf(Constants.class, "Constants_A");
        Constants con2 = (Constants)Enum.valueOf(clasz, "Constants_B");

我用Constants.class可以编译通过。用Clazz接收一个Constants枚举类型的Class对象放进去,就编译不通过,必须要向下转型为Constants才能编译通过是为什么??

→_→    因为这个传参本来就是想知道你这数据是什么类型,你传Class等于没传,就像你养了一只宠物,人家问你什么宠物,你说就是宠物呀,所以它是猫?是狗?是鱼?别人怎么知道

Class<Constants> clasz = Constants.Constants_A.getDeclaringClass();

需要声明类型编译器才知道

语法和语义问题,建议参考java api文档。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632