2013-10-12 16 views
13

Quando si dichiara un enum all'interno di una classe in Java che ho visto questi 2 approcci:privato posizione enum all'interno di una classe 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; 
    } 
} 

Qual è il più usato? C'è qualche convenzione per questo?

+0

C'è qualche problema se lo si inserisce in modo diverso? – Rupesh

+0

@Rupesh Voglio solo sapere se c'è una convenzione per questo o se è una questione di preferenze personali. – miviclin

+0

no per niente e di essere sul lato più sicuro "non che io sappia". Riferisci la mia risposta sotto – Rupesh

risposta

16

Generalmente in Java, i tipi di dati nidificati (ad esempio classi, enumerazioni) si trovano nella parte inferiore di un file.

Tuttavia, in breve, enumerie private come quella che hai postato (che sembrano più campi), andrei con # 1.

Per le enumerazioni più lunghe, vorrei andare con # 2 o inserirle in un file separato.

0

Non esiste alcuna convenzione utilizzata, ma da quello che ho visto, l'esempio 1 viene utilizzato più spesso. Personalmente li posto anche in questo modo.

0

Java non ha un'istruzione typedef (come in C e C++). Per dichiarare nuovi tipi in Java, dichiarare una nuova classe; allora le variabili possono essere dichiarate come di quel tipo di classe. Anche Java utilizza Riferimenti avanzati, il compilatore java è più intelligente del compilatore C, in quanto consente di richiamare i metodi prima che vengano definiti. Ciò elimina la necessità di dichiarare le funzioni in un file di intestazione prima di definirle in un file di programma, come avviene in C.

Posso posizionare il mio enum ovunque e posso accedervi da qualsiasi luogo. Riferisci esempio.

class CheckEnum{ 

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

Ho controllato e sia il metodo method1 e method2 ha accesso a enumTest.

0

Non c'è niente di sbagliato in entrambi. È più una questione di opinione, ma vorrei andare al primo posto.