konto usunięte

Temat: No enclosing instance of type Test is accessible....

Witam :)
dopiero zaczynam z językiem JAVA, korzystam z książki JAVA 2 core podstawy. Podczas Uruchomienia jednego z przykładów:

import javax.swing.*;

public class Test {

public static void main(String[] args)
{
ProstaRamka ramka = new ProstaRamka();
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.show();

}
class ProstaRamka extends JFrame
{
public ProstaRamka()
{
setSize(SZEROKOSC, WYSOKOSC);
}
}
public static final int SZEROKOSC = 50;
public static final int WYSOKOSC = 50;
}

dostaję taki błąd:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No enclosing instance of type Test is accessible. Must qualify the allocation with an enclosing instance of type Test (e.g. x.new A() where x is an instance of Test).


co jest nie tak w tym kodzie.

trochę to dziwne, kody z książki powinny być poprawne, a nie tylko ten jeden nie działa :(Paweł Ryznar edytował(a) ten post dnia 23.02.08 o godzinie 14:23

konto usunięte

Temat: No enclosing instance of type Test is accessible....

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No enclosing instance of type Test is accessible. Must qualify the allocation with an enclosing instance of type Bankomat (e.g. x.new A() where x is an instance of Test).

Co to za Bankomat?

Co do odpowiedzi na pytanie to chodzi o to ze tworzysz instancje klasy wewnetrznej (nie-statycznej) bez instancji klasy zewnetrznej.
Rozwiazan jest pare:
1 albo uczyn klase ProstaRamka statyczna
2 albo zrob z niej stand-alone klase (nie-wewnetrzna)
3 albo utworz instancje klasy ProstaRamka tak:
Test test = new Test();
ProstaRamka ramka = test.new ProstaRamka();

4 uzyj Eclipse-a ktory podkresli Ci bledy i powie jak co poprawic jeszcze przed kompilacjaPawel Dolega edytował(a) ten post dnia 23.02.08 o godzinie 14:23
Damian P.

Damian P. Starszy Programista
Java / JEE

Temat: No enclosing instance of type Test is accessible....

Klasa ProstaRamka jest klasą wewnętrzną dla klasy Test, tak więc (zgodnie zresztą z podpowiedzią w treści błędu) instancję tej klasy należy tworzyć w następujący sposób:
import javax.swing.*;

public class Test {

public static void main(String[] args)
{
Test t = new Test();
ProstaRamka ramka = t.new ProstaRamka();
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.show();
}

class ProstaRamka extends JFrame
{
public ProstaRamka()
{
setSize(SZEROKOSC, WYSOKOSC);
}
}
public static final int SZEROKOSC = 50;
public static final int WYSOKOSC = 50;
}

konto usunięte

Temat: No enclosing instance of type Test is accessible....

Pawel Dolega:
Co to za Bankomat?
pomyłka, bo zmieniłem nazwę klasy a nie poprawiłem nazw w komunikacie :P

dziękuje za wyjaśnienie. w sumie sam przeniosłem ją już poza klasę Test. Ale tak jak pisałem, dziwne że autorzy nie napisali tak jak trzeba. no chyba że zaszły jakieś zmiany od czasu wydania książki, bo została wydana w 2002

konto usunięte

Temat: No enclosing instance of type Test is accessible....

nie, nie zaszly, blad w snippet-cie; ewentualnie zapomniales jednego "curly brace-a" ktory oddzielalby jedna klase od drugiej (i tym samym czynilby druga klase normalna klasa zewnetrzna).
Krzysztof Zaporowski

Krzysztof Zaporowski Programista
Java/JEE, Ocado

Temat: No enclosing instance of type Test is accessible....

albo wydawca zjadł "}" ;-)

Następna dyskusja:

agile test driven development




Wyślij zaproszenie do