Mam bardzo dziwny błąd kompilacji:nie można uzyskać dostępu do pola z kontekstu statycznego podczas przechodzenia wartość superkonstruktor
class Super {
Super(int[] array) {
}
}
class Sub extends Super {
private final int number = 1;
Sub() {
super(new int[] { number }); //error
}
}
Błąd pojawia jest
Cannot access field from static context
Moje pytanie
Gdzie jest kontekst statyczny? Wygląda na to, że nawet statyczne nie odgrywają tutaj żadnej roli.
Natknąłem się na tę próbę odpowiedzi na cudze pytanie; znalazłem błąd, który wprawił mnie w zakłopotanie. Czy ktoś może wyjaśnić, gdzie znajduje się kontekst statyczny?
Z którego kompilatora korzystasz? Dostaję 'nie można podać numeru, zanim został wywołany konstruktor supertype'. Zobacz także JLS 8.8.7.1. _Explicit Constructor Invocations_, które stwierdza: _ "Wyraźna instrukcja wywołania konstruktora w ciele konstruktora może nie odwoływać się do zmiennych instancji lub metod instancji lub klas wewnętrznych zadeklarowanych w tej klasie lub jakiejkolwiek nadklasie, lub użyć tego lub super w dowolnym wyrażeniu; pojawia się błąd podczas kompilacji. "_ –
@ZouZou Pierwszy raz natknąłem się na AIDE mojego telefonu, który jestem pewien, używa kompilatora Dalvik. Potem wskoczyłem na komputer, aby wypróbować go na Eclipse Luna, używając ich kompilatora JDK 8u25 i otrzymałem ten sam komunikat o błędzie. Nie jestem pewien, dlaczego daje mi to statyczny błąd kontekstu, więc myślę, że powinienem ponownie zainstalować Eclipse. Jeśli chodzi o AIDE, nie jestem zbyt zaskoczony, że dał mi ostry błąd –