2013-10-12 4 views
13

Wenn eine ENUM innerhalb einer Klasse in Java erklärt habe ich diese zwei Ansätze gesehen:privater Enum-Standort innerhalb einer Klasse in Java

1)

public class MyClass { 

    private enum MyEnum { 
     A, B, C; 
    } 

    /* Static fields */ 

    /* Instance variables */ 

    /* Methods */ 
} 

2)

public class MyClass { 

    /* Static fields */ 

    /* Instance variables */ 

    /* Methods */ 

    private enum MyEnum { 
     A, B, C; 
    } 
} 

Welches ist das am häufigsten verwendete? Gibt es eine Konvention dafür?

+0

Gibt es ein Problem, wenn Sie es anders platzieren? – Rupesh

+0

@Rupesh Ich möchte nur wissen, ob es eine Konvention dafür gibt oder ob es eine persönliche Vorliebe ist. – miviclin

+0

nein überhaupt nicht und auf der sicheren Seite sein "nicht, dass ich weiß". Siehe meine Antwort unter – Rupesh

Antwort

16

Im Allgemeinen gehen verschachtelte Datentypen (z. B. Klassen, Enums) in Java am Ende einer Datei.

Aber kurz, private enums wie die, die Sie gepostet haben (die sich mehr wie Felder fühlen), würde ich mit # 1 gehen.

Für längere Enums, würde ich entweder mit # 2 gehen oder sie in eine separate Datei legen.

0

Es gibt keine Konvention dafür, aber von dem, was ich gesehen habe, wird Beispiel 1 häufiger verwendet. Ich stelle sie auch persönlich auf diese Weise.

0

Java hat keine typedef Anweisung (wie in C und C++). Um neue Typen in Java zu deklarieren, deklarieren Sie eine neue Klasse. Dann können Variablen als vom Typ dieser Klasse deklariert werden. Auch Java verwendet Forward-Referenzen, Java-Compiler ist schlauer als der C-Compiler, in dem Methoden erlaubt, aufgerufen werden, bevor sie definiert sind. Dies macht es überflüssig, Funktionen in einer Header-Datei zu deklarieren, bevor sie in einer Programmdatei definiert werden, wie es in C gemacht wird. Ich kann meine enum irgendwo platzieren und kann von überall darauf zugreifen. Siehe Beispiel.

class CheckEnum{ 

    private void method1() { 
     System.out.println(enumTest.test1);  
    }  
    private enum enumTest{ 
     test1 
    }  
    private void method2() { 
     System.out.println(enumTest.test1); 
    } 
} 

Ich habe überprüft, und beide Verfahren method1 und method2 Zugang zu enumTest hat.

0

Es ist nichts falsch mit jedem von ihnen. Es ist mehr eine Frage der Meinung, aber ich würde gehen gehen # 1.

Verwandte Themen