Wenn ich meinen Java Enum Day kompiliere, erzeugt er seine Day.class Datei und 8 Day $ #. Class Dateien, also möchte ich wissen, warum der Compiler 8 $ #. Class statt 7 generiert, weil ich 7 enum Konstanten habe , aber 8 Override-Annotationen, ich habe verstanden, dass die Dollar.class-Dateien für jede innere Klasse oder durch Enum-Konstanten erzeugt werden, aber was ist mit der acht .class-Datei, wofür sie generiert wird?
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();
}
Und es erzeugt diese:
- Day.class
- Tag $ 1.class
- Tag $ 2.Klasse
- Tag $ 3.class
- Tag $ 4.class
- Tag $ 5.Klasse
- Da y 6.class $
- Tag $ 7.class
- Tag $ 8.class
@SotiriosDelimanolis ist nicht wirklich, Herr hier weiß, was die Klassen mit einem Dollarzeichen im Namen sind, er fragt nach etwas anderem. –
(Sie wissen, dass Sie dort oktale Konstanten verwenden?) –
Ich spielte mit dem Compiler und ich habe den Schalter innerhalb der toString override subtrahiert und es generiert 7 .class-Dateien, so dass ich die acht eins wird von der enum generiert Schalter?? weiß jemand, ob das die Antwort ist? – Eefret