JavaRush /Java 博客 /Random-ZH /嵌套类、本地类和匿名类
WhatNick
第 17 级

嵌套类、本地类和匿名类

已在 Random-ZH 群组中发布
祝大家有美好的一天!我开始深入研究类的类型并编写包含该类的代码。该类包含一个方法main()和一个静态嵌套类。静态嵌套类包含一个方法。该方法创建一个本地类。本地类有一个创建框架类的匿名类的方法(我强烈怀疑这种变态在编程实践中发生,但出于纯粹的体育兴趣,我决定聪明一点,所以请不要扔石头。无论如何,在时间之前)。简化后看起来像这样: 嵌套类、本地类和匿名类 - 1
class Outer { // ОБРАМЛЯЮЩИЙ КЛАСС
    static class Inner { // СТАТИЧЕСКИЙ ВЛОЖЕННЫЙ КЛАСС
        int doInnerThings() { // ЛОКАЛЬНЫЙ МЕТОД ВНУТРЕННЕГО КЛАССА
            class LocalInner { // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ КЛАСС
                int doLocalInnerThings() { // МЕТОД ЛОКАЛЬНОГО КЛАССА
                    new Outer(5) {}; // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ АНОНИМНЫЙ КЛАСС
                }
            }
        }
    }
}
目标:使用框架超类在匿名类中创建一个变量,并将该变量的参数一直“扔”到内部类,分别将其分配给内部类变量。下面是一个稍微扩展的代码,带有我的草图。
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);
    }
}
问题:方法int doInnerThings()我无法将本地类中的innerValue变量“的值分配给该方法的变量。我很乐意提供帮助!:) localInnerValueLocalInner
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION