【发布时间】:2013-10-07 16:55:48
【问题描述】:
当我编译我的 java Enum Day 时,它会生成他的 Day.class 文件和 8 Day$#.class 文件,所以我想知道为什么编译器生成 8 $#.class 而不是 7,因为我有 7 个枚举常量,但是 8 个覆盖注释,我知道 Dollar.class 文件是为每个内部类或枚举常量生成的,但是八个 .class 文件是为了什么而生成的呢?
package com.kaissersoft.test.objective.one.three.enums;
public enum Day{
SUNDAY(01){
@Override
public void salute(){
System.out.println("Today is Sunday");
}
},
MONDAY(02){
@Override
public void salute(){
System.out.println("Today is Monday");
}
},
TUESDAY(03){
@Override
public void salute(){
System.out.println("Today is Tuesday");
}
},
WEDNESDAY(04){
@Override
public void salute(){
System.out.println("Today is Wednesday");
}
},
THURSDAY(05){
@Override
public void salute(){
System.out.println("Today is Thursday");
}
},
FRIDAY(06){
@Override
public void salute(){
System.out.println("Today is Friday");
}
},
SATURDAY(07){
@Override
public void salute(){
System.out.println("Today is Saturday");
}
};
int dayNumber;
Day(final int day){
dayNumber = day;
}
public int getDayNumber(){
return dayNumber;
}
@Override
public String toString(){
switch(this){
case SUNDAY:
System.out.println("Sunday("+this.getDayNumber()+")");
break;
case MONDAY:
System.out.println("Monday("+this.getDayNumber()+")");
break;
case TUESDAY:
System.out.println("Tuesday"+this.getDayNumber()+")");
break;
case WEDNESDAY:
System.out.println("Wednesday("+this.getDayNumber()+")");
break;
case THURSDAY:
System.out.println("Thursday("+this.getDayNumber()+")");
break;
case FRIDAY:
System.out.println("Friday("+this.getDayNumber()+")");
break;
case SATURDAY:
System.out.println("Saturday("+this.getDayNumber()+")");
break;
}
return super.toString();
}
//Abstract method to the day Salute
public abstract void salute();
}
它会生成这个:
- Day.class
- Day$1.class
- Day$2.class
- Day$3.class
- Day$4.class
- Day$5.class
- Day$6.class
- Day$7.class
- Day$8.class
【问题讨论】:
-
@SotiriosDelimanolis 不是真的,这里的绅士知道名称中带有美元符号的类是什么,他在问别的事情。
-
(你知道你在那里使用八进制常量吗?)
-
我在玩编译器,我在 toString 覆盖中减去了开关,它生成了 7 个 .class 文件,所以我假设八个是由 enum 开关生成的?有人知道这是否是答案吗?
-
@SotiriosDelimanolis 是的,我只要求八个 .class 文件
标签: java class enums overriding inner-classes