JavaRush /Blog Jawa /Random-JV /Kelas bersarang, lokal lan anonim
WhatNick
tingkat

Kelas bersarang, lokal lan anonim

Diterbitake ing grup
Sugeng dina kanggo kabeh! Aku wiwit nggali luwih jero menyang jinis kelas lan nulis kode sing ngemot kelas kasebut. Kelas iki ngemot metode main()lan kelas nested statis. Kelas nested statis ngemot metode. Cara nggawe kelas lokal. Kelas lokal nduweni cara sing nggawe kelas anonim saka kelas framing (Aku mangu-mangu yen perversions kuwi njupuk Panggonan ing laku program, nanging marga saka kapentingan sejatine sifate olahraga aku mutusaké kanggo dadi pinter, supaya please ora uncalan watu. Sadurunge wektu, ing kasus apa wae). Sederhana katon kaya iki: Kelas bersarang, lokal lan anonim - 1
class Outer { // ОБРАМЛЯЮЩИЙ КЛАСС
    static class Inner { // СТАТИЧЕСКИЙ ВЛОЖЕННЫЙ КЛАСС
        int doInnerThings() { // ЛОКАЛЬНЫЙ МЕТОД ВНУТРЕННЕГО КЛАССА
            class LocalInner { // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ КЛАСС
                int doLocalInnerThings() { // МЕТОД ЛОКАЛЬНОГО КЛАССА
                    new Outer(5) {}; // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ АНОНИМНЫЙ КЛАСС
                }
            }
        }
    }
}
Sasaran: nggawe variabel ing kelas anonim nggunakake kelas super framing, lan "mbuwang" argumen variabel iki nganti tekan kelas njero, ditugasake menyang variabel kelas njero. Ing ngisor iki kode sing rada ditambahi, kanthi sketsaku.
class Outer { // ОБРАМЛЯЮЩИЙ КЛАСС
    int outerValue = 0;

    Outer(int a)
    {
        this.outerValue = a*a;
    }

    int getValue() {
        return outerValue;
    }

    static class Inner { // ВНУТРЕННИЙ СТАТИЧЕСКИЙ КЛАСС
        public  int innerValue = doInnerThings();

        int doInnerThings() {
            final int innerValue = 0; // КАК ПЕРЕДАТЬ ЗНАЧЕНИЕ ЭТОЙ ПЕРЕМЕННОЙ ИЗ КЛАССА НИЖЕ?

            class LocalInner { // ЛОКАЛЬНЫЙ КЛАСС
                final public int localInnerValue;

                LocalInner() {
                    localInnerValue = doLocalInnerThings();
                }

                int doLocalInnerThings() {
                    final int[] localInnerAnonValue = {0};

                    new Outer(5) { // АНОНИМНЫЙ КЛАСС
                        @Override
                        int getValue()
                        {
                            localInnerAnonValue[0] = super.getValue();
                            return localInnerAnonValue[0];
                        }
                    };

                    return localInnerAnonValue[0];
                }

                int getlocalInnerValue() {
                    return this.localInnerValue;
                }
            }

            return innerValue;
        }
    }

    public static void main(String[] args) {
        Outer.Inner test = new Outer.Inner();
        System.out.println(test.innerValue);
    }
}
Masalah: metode int doInnerThings()Aku ora bisa nemtokake innerValuenilai variabel localInnerValue" saka kelas lokal menyang variabel metode iki LocalInner. Aku bakal seneng mbantu! :)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION