JavaRush /Java-Blog /Random-DE /Verschachtelte, lokale und anonyme Klassen
WhatNick
Level 17

Verschachtelte, lokale und anonyme Klassen

Veröffentlicht in der Gruppe Random-DE
Guten Tag allerseits! Ich fing an, tiefer in die Klassentypen einzutauchen und schrieb den Code, der die Klasse enthält. Diese Klasse enthält eine Methode main()und eine statische verschachtelte Klasse. Eine statisch verschachtelte Klasse enthält eine Methode. Die Methode erstellt eine lokale Klasse. Die lokale Klasse verfügt über eine Methode, die eine anonyme Klasse der Framing-Klasse erstellt (ich bezweifle stark, dass solche Perversionen in der Programmierpraxis vorkommen, aber aus rein sportlichen Gründen habe ich beschlossen, schlau zu sein, also werfen Sie bitte keine Steine. Auf jeden Fall vor der Zeit). Vereinfacht sieht es so aus: Verschachtelte, lokale und anonyme Klassen – 1
class Outer { // ОБРАМЛЯЮЩИЙ КЛАСС
    static class Inner { // СТАТИЧЕСКИЙ ВЛОЖЕННЫЙ КЛАСС
        int doInnerThings() { // ЛОКАЛЬНЫЙ МЕТОД ВНУТРЕННЕГО КЛАССА
            class LocalInner { // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ КЛАСС
                int doLocalInnerThings() { // МЕТОД ЛОКАЛЬНОГО КЛАССА
                    new Outer(5) {}; // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ АНОНИМНЫЙ КЛАСС
                }
            }
        }
    }
}
Ziel: Erstellen Sie eine Variable in einer anonymen Klasse mithilfe einer übergeordneten Rahmenklasse und „werfen“ Sie das Argument dieser Variablen bis zur inneren Klasse, indem Sie es jeweils der Variablen der inneren Klasse zuweisen. Unten ist ein leicht erweiterter Code mit meinen Skizzen.
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);
    }
}
Problem: Methode Ich kann den Wert einer Variablen „aus einer lokalen Klasse int doInnerThings()nicht einer Variablen dieser Methode zuweisen . Ich würde gerne helfen! :)“ innerValuelocalInnerValueLocalInner
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION