2010-10-22 9 views
8

Jak mogę przekazać parametr enum przez odniesienie w java? Jakieś rozwiązanie?przekazywanie wyliczeń przez odniesienie w java

+3

Jaki jest przypadek użycia? –

+1

Normalnym powodem "przekazania argumentu przez odniesienie" jest to, że chcesz go zmodyfikować. Możesz to zrobić zazwyczaj w Javie, ponieważ zmienne są w rzeczywistości odwołaniami - jednak modyfikacja wyliczenia jest na ogół bardzo złym pomysłem. – DJClayworth

Odpowiedz

5

W Javie nie można przekazać żadnych parametrów przez odniesienie.

Jedynym sposobem obejścia tego problemu jest utworzenie klasy opakowania i zawarcie wyliczenia.

public class EnumReference { 
    public YourEnumType ref; 
} 

I wtedy można go używać tak:

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

Teraz odniesienia będzie zawierać inną wartość dla wyliczenia; zasadniczo naśladując przekazywanie referencji.

+0

Tak naprawdę stworzyłem rodzajowy typ 'IndirectReference ' specjalnie dla tego rodzaju rzeczy. Zmęczyło mnie mijanie tablic. – Jonathan

+0

@Jon, dobre połączenie. Zazwyczaj nie wydaje mi się, że mam problem z wartością graniczną. Nigdy nie wchodzę mi w drogę. – jjnguy

+4

@ Jonathan: Można również użyć 'AtomicReference'. – ColinD

11

Java jest przekazywana według wartości - zawsze.

Użytkownik przekazuje referencje, a nie obiekty. Referencje są przekazywane wartością.

Możesz zmienić stan zmiennej obiektu, do którego odnosi się odniesienie w funkcji, do której został przekazany, ale nie możesz zmienić samego odniesienia.

+0

Nie mogę sobie wyobrazić, dlaczego zostało to odrzucone - w ogóle niepoprawne. Pięć lat. Głupi. – duffymo

Powiązane problemy