Przyklady zastosowan statycznej klasy wewnetrznej

0

Jak w tytule tematu - do czego moze zostac taka klasa wykorzystana? Jakie jest jej powołanie?

0

Java?

0

Tak, zapomniałem otagowac.

0

Podstawowa różnica pomiędzy statyczną klasą wewnętrzną, a niestatyczną klasą wewnętrzną jest taka, że niestatyczna posiada niejawną referencję do klasy zewnętrzej, a statyczna nie posiada. Z tego względu instancja klasy wewnętrznej statycznej zajmuje mniej pamięci (o tą referencję) niż klasa wewnętrzna niestatyczna. Ponadto stosowanie niestatycznych klas wewnętrznych powoduje większe ryzyko wycieku pamięci, tzn sytuacja którą mam na myśli to taka, w której instancja klasy zewnętrznej jest osiągalna tylko z tej niejawnej referencji w instancji klasy wewnętrznej, a instancja klasy wewnętrznej nie korzysta już z instancji klasy zewnętrznej. W takiej sytuacji odśmiecacz nie może wyrzucić instancji klasy zewnętrznej (tak jak żadnej innej do której prowadzi jakaś referencja).

Zastosowania możesz sobie bez problemu wymyślić.

0

Dzieki za wędke ;P. Jak to czytalem, to do glowy przychodzil mi singleton z, ale nawet nie chce mi sie poki co zastanawiac czy slusznie.

Pozdrawiam.

0

To tak na szybkiego jeszcze, aby utworzyc obiekt wewnetrznej klasy statycznej nie jest wymagany obiekt klasy zewnetrznej?
A gdy chce utworzyc obiekt klasy wewnetrznej niestatycznej, to msuze to zrobic za posrednictwem obiektu klasy zewnetrznej?

0

Singleton niby może być, choć to antywzorzec generalnie. Dobry przykład singletona to: http://en.wikipedia.org/wiki/Singleton_pattern#The_solution_of_Bill_Pugh

A jeśli chodzi o tworzenie klas wewnętrznych to tutaj masz kod:

class Zewnętrzna {

    class NiestatycznaWewnętrzna {
    }

    static class StatycznaWewnętrzna {
    }
}

public class Main {

    public static void main(String[] args) {
        Zewnętrzna.StatycznaWewnętrzna statycznaWewnętrzna = new Zewnętrzna.StatycznaWewnętrzna();
        Zewnętrzna zewnętrzna = new Zewnętrzna();
        Zewnętrzna.NiestatycznaWewnętrzna niestatycznaWewnętrzna1 = zewnętrzna.new NiestatycznaWewnętrzna();
        Zewnętrzna.NiestatycznaWewnętrzna niestatycznaWewnętrzna2 = new Zewnętrzna().new NiestatycznaWewnętrzna();
    }
}

ATSD:
Temat nadaje się do działu Java - sporo osób nie wie o co biega z klasami statycznymi/ niestatycznymi, a wątki z działu Newbie są automatycznie kasowane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1