當我編譯我的Java枚舉日,它會生成他的Day.class文件和8天$#.class文件,所以我想知道爲什麼編譯器生成8 $#。類而不是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
- 日$ 1.class
- 日$ 2.class
- 日$ 3.class
- 日$ 4.class
- Day $ 5.class
- Da Y $ 6.class
- 日$ 7.class
- 日$ 8.class
@SotiriosDelimanolis不是真的,這裏的紳士知道這個名字上有什麼美元符號,他在詢問別的什麼。 –
(你確實知道你在使用八進制常量嗎?) –
我正在玩編譯器,並且我已經減去了toString覆蓋中的開關,並且它生成了7個.class文件,所以我構建了第八個由enum生成的文件開關??任何人都知道這是否是答案? – Eefret