JavaRush /Blog Java /Random-FR /Classes imbriquées, locales et anonymes
WhatNick
Niveau 17

Classes imbriquées, locales et anonymes

Publié dans le groupe Random-FR
Bonne journée à tous! J'ai commencé à approfondir les types de classes et à écrire le code qui contient la classe. Cette classe contient une méthode main()et une classe imbriquée statique. Une classe imbriquée statique contient une méthode. La méthode crée une classe locale. La classe locale a une méthode qui crée une classe anonyme de la classe de cadrage (je doute fortement que de telles perversions se produisent dans la pratique de la programmation, mais par souci d'intérêt purement sportif, j'ai décidé d'être intelligent, alors s'il vous plaît, ne jetez pas de pierres. Avant l’heure, en tout cas). En simplifié, cela ressemble à ceci : Classes imbriquées, locales et anonymes - 1
class Outer { // ОБРАМЛЯЮЩИЙ КЛАСС
    static class Inner { // СТАТИЧЕСКИЙ ВЛОЖЕННЫЙ КЛАСС
        int doInnerThings() { // ЛОКАЛЬНЫЙ МЕТОД ВНУТРЕННЕГО КЛАССА
            class LocalInner { // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ КЛАСС
                int doLocalInnerThings() { // МЕТОД ЛОКАЛЬНОГО КЛАССА
                    new Outer(5) {}; // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ АНОНИМНЫЙ КЛАСС
                }
            }
        }
    }
}
Objectif : créer une variable dans une classe anonyme à l'aide d'une super classe de cadrage et « lancer » l'argument de cette variable jusqu'à la classe interne, en l'attribuant respectivement à la variable de classe interne. Vous trouverez ci-dessous un code légèrement développé, avec mes croquis.
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);
    }
}
Problème : méthode int doInnerThings()Je n'arrive pas à attribuer innerValuela valeur d'une variable localInnerValue" d'une classe locale à une variable de cette méthode LocalInner. Je serais heureux de vous aider ! :)
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION