Właśnie dostałem projekt Java5, który ma ten błąd, próbowałem używać Java5 i Java6, ale nadal tam jest. jakoś działało wcześniej (skoro był w svn), jak mogę ominąć ten błąd kompilatora?Nie można odwoływać się do statycznego pola wyliczeniowego w inicjalizatorze?
Odpowiedz
Nie "pomijaj" błędu - nie zrobi tego, co chcesz. Błąd jest nie bez powodu.
Wartości wyliczeniowe są inicjowane przed innymi statycznymi polami. Jeśli chcesz zrobić coś jak dodanie wszystkich wartości na mapie, zrób to w statycznego inicjatora po wszystkiego:
import java.util.*;
public enum Foo
{
BAR, BAZ;
private static final Map<String, Foo> lowerCaseMap;
static
{
lowerCaseMap = new HashMap<String, Foo>();
for (Foo foo : EnumSet.allOf(Foo.class))
{
// Yes, use some appropriate locale in production code :)
lowerCaseMap.put(foo.name().toLowerCase(), foo);
}
}
}
Jon - czy wiesz, dlaczego ten błąd nie występuje w Eclipse 3.3, ale czy w 3.4? – tddmonkey
Czy w powyższym przykładzie są powody używania 'Foo foo: EnumSet.allOf (Foo.class)' zamiast 'Foo foo: Foo.values ()'? –
@AbdullahJibaly: Niezupełnie. Sądzę, że są w przybliżeniu równoważne. –
inny sposób na „obejście” to, jeśli trzeba na przykład licznik lub coś, co musi działać na każdym initalization, jest stworzenie prywatnej statycznej klasę wewnętrzną, tak jak poniżej:
- 1. klasa non-static nie można odwoływać się od statycznego kontekście
- 2. Nie można odwoływać się do "Main.this" z kontekstu statycznego, jeśli zewnętrzna klasa jest generowana
- 3. nie można utworzyć statycznego odwołania do niestatycznego pola
- 4. Nie można odwoływać się do importowanego modułu w __ __del()
- 5. Nie można odwoływać się do biblioteki klasy F #
- 6. niż statyczna nazwa zmiennej nie można odwoływać się od statycznego kontekście
- 7. Nie można zmienić statycznego pola końcowego przy użyciu odbicia Java?
- 8. „Domyślny konstruktor nie można odwoływać się” w Visual Studio 2015
- 9. nie można uzyskać dostępu do pola niestatyczny
- 10. Get pola statycznego
- 11. Zmiana pola wyliczeniowego przy użyciu Alembic
- 12. Przypisywanie do statycznego pola tylko do odczytu w klasie bazowej
- 13. można odwoływać się do jednej kolumny jako wielu kluczy obcych
- 14. Dlaczego nie mogę odwoływać się do System.Web.Extensions w aplikacji Console?
- 15. Inicjator pól nie może odwoływać się do niestatycznego pola, metody ani właściwości
- 16. nie można uzyskać dostępu do pola z kontekstu statycznego podczas przechodzenia wartość superkonstruktor
- 17. initializer pole nie może odwoływać się do pola non-static, metody lub właściwości
- 18. Rusztowanie/Generowanie właściwości obiektu w inicjalizatorze
- 19. Nie można utworzyć statycznego odwołania do niestatycznego pola zmienna element członkowska ze zmienną prywatną
- 20. błąd Xamarin iOS: Nie można rozwiązać odwoływać
- 21. Nie można odwoływać się do pól klasy obserwowalnej z layoutu xml
- 22. Nie można odwoływać się do arkusza stylów CSS w szablonie ładowanym przez pythona
- 23. Nie można odwoływać się do biblioteki klasy .NET Core w aplikacji Universal Windows lub WPF
- 24. Nie można odwoływać się do nieostatniej zmiennej wewnątrz klasy wewnętrznej zdefiniowanej w innej metodzie
- 25. Dostęp do pola statycznego w kolekcjonerskich złożeniach dynamicznych jest niewystarczający.
- 26. Dlaczego kompilator C# nie przestaje odwoływać się do właściwości?
- 27. Nie można utworzyć statycznego odwołania do metody niestatycznej (Android getApplicationContext())
- 28. Nie można odwoływać się do projektu biblioteki (DLL), ponieważ brakuje pliku .lib
- 29. Jak wprowadzić wartość wtrysku sprężyny do pola statycznego
- 30. Dlaczego ten kod enum jest nielegalnym odniesieniem do pola statycznego?
to może pomóc, aby opublikować swój kod, który jest erroring – tddmonkey
można podać małą próbkę kodu, co próbujesz osiągnąć? –
Przykro mi to, znalazłem go przez google, ale wydaje się działać, gdy prywatne statyczne pole końcowe jest typem pierwotnym. Czy ktoś ma pomysł, dlaczego? – Norswap