2010-10-22 14 views
8

Come posso passare il parametro enum per riferimento in java? Qualche soluzione?passando enum per ref in java

+3

Qual è il caso d'uso? –

+1

Il motivo normale per "passare un argomento per riferimento" è che si desidera modificarlo. È possibile farlo normalmente in Java perché le variabili sono in realtà riferimenti, tuttavia la modifica di enum è generalmente una pessima idea. – DJClayworth

risposta

5

In Java non è possibile passare alcun parametro per riferimento.

L'unica soluzione che posso pensare sarebbe quella di creare una classe wrapper e avvolgere un enum.

public class EnumReference { 
    public YourEnumType ref; 
} 

E poi si usa in questo modo:

public void someMethod(EnumReference reference) { 
    reference.ref = YourEnumType.Something; 
} 

Ora, riferimento conterrà un valore diverso per il tuo enum; essenzialmente mimando il pass-by-reference.

+0

Ho effettivamente creato un tipo generico 'IndirectReference ' specificamente per questo genere di cose. Mi sono stancato di passare matrici in giro. – Jonathan

+0

@Jon, buona chiamata. Di solito non ho problemi con il pass-by-value. Non sembra mai di intralciarmi. – jjnguy

+4

@ Jonathan: è anche possibile utilizzare "AtomicReference". – ColinD

11

Java è passato per valore - sempre.

Si passano i riferimenti, non gli oggetti. I riferimenti sono passati per valore.

È possibile modificare lo stato di un oggetto mutabile a cui fa riferimento il riferimento in una funzione in cui è passato, ma non è possibile modificare il riferimento stesso.

+0

Non riesco a immaginare perché questo è stato downvoted - non è affatto corretto. Cinque anni. Silly. – duffymo