2010-10-22 15 views
8

¿Cómo puedo pasar el parámetro enum por referencia en java? ¿Alguna solución?pasando enumeraciones por ref en java

+3

¿Cuál es el caso de uso? –

+1

La razón normal para "pasar un argumento por referencia" es que desea modificarlo. Puede hacer esto generalmente en Java porque las variables son de hecho referencias; sin embargo, modificar una enumeración generalmente es una muy mala idea. – DJClayworth

Respuesta

5

En Java no puede pasar ningún parámetro por referencia.

La única solución que puedo pensar sería crear una clase contenedora, y ajustar una enumeración.

public class EnumReference { 
    public YourEnumType ref; 
} 

Y entonces se usaría así:

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

Ahora, la referencia contendrá un valor diferente para su enumeración; esencialmente imitando la referencia de paso por paso.

+0

En realidad, creé un tipo genérico de 'Referencia indirecta ' específicamente para este tipo de cosas. Me cansé de pasar arreglos alrededor. – Jonathan

+0

@Jon, buena llamada. No suelo tener un problema con pass-by-value. Nunca parece estar en mi camino. – jjnguy

+4

@Jonathan: también podría usar 'AtomicReference'. – ColinD

11

Java se pasa por valor, siempre.

Pasa referencias, no objetos. Las referencias se pasan por valor.

Puede cambiar el estado de un objeto mutable al que hace referencia la referencia en una función en la que se transfiere, pero no puede cambiar la referencia en sí.

+0

No puedo imaginar por qué esto fue votado negativamente, no es incorrecto en absoluto. Cinco años de edad. Tonto. – duffymo