枚举

sunboylyg 2008-03-11 10:17:29
为什么下面的类总是无法通过编译?报错:重复定义方法!
enum Color{
RED,GREEN,YELLOW,BLUE,BLACK,WHITE,ORANGE;
public Color valueOf(String str){
return null;
}
}
这不就是一般的方法重载么,怎么会出错?
...全文
67 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hmsuccess 2008-03-11
  • 打赏
  • 举报
回复
你重载的是什么方法
hmsuccess 2008-03-11
  • 打赏
  • 举报
回复
java.lang.Enum
sunboylyg 2008-03-11
  • 打赏
  • 举报
回复
啊!怎么沉了?
sunboylyg 2008-03-11
  • 打赏
  • 举报
回复
楼上的好像不对吧?enum可以有自己的普通变量和方法的。当然,也许真正能用到的只是一些int值...
believefym 2008-03-11
  • 打赏
  • 举报
回复
上面把static去掉
believefym 2008-03-11
  • 打赏
  • 举报
回复
enum还能这么用的?
enum就是一些int,你当class来用当然不行了
你可以这样改


class Color{
private static final Color RED = new Color();
private static final Color GREEN = new Color();
private static final Color BLUE = new Color();

public Color valueOf(String str){
return null;
}
}
sunboylyg 2008-03-11
  • 打赏
  • 举报
回复
对了,主要问题是我在1.5的jdk中找不到关于enum的内容,请问是在哪个包里面?
sunboylyg 2008-03-11
  • 打赏
  • 举报
回复
我按楼上所说改为:

public static Color valueOf(Color c,String str){
return null;
}

能通过编译,但它已经是一个新方法了,而不是我想要的重载方法。。。
hmsuccess 2008-03-11
  • 打赏
  • 举报
回复
应该是这个,看看jdk吧
valueOf
public static <T extends Enum<T>> T valueOf(Class<T> enumType,
String name)
sunboylyg 2008-03-11
  • 打赏
  • 举报
回复
谢谢大家!结贴散分
insiku 2008-03-11
  • 打赏
  • 举报
回复
你又不是extends java.lang.Enum
怎么重载???

虽然所有enum都是extends java.lang.Enum
但这是编译器为你重新包装做的事
你写上public Color valueOf(String str)
编译器处理的时候 只会发现方法已存在 当然会冲突

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧