全てにおいて良い日!私はクラスの種類をさらに深く掘り下げ始め、そのクラスを含むコードを書きました。このクラスには、メソッド
main()
と静的ネストされたクラスが含まれています。静的ネストされたクラスにはメソッドが含まれます。このメソッドはローカル クラスを作成します。ローカル クラスには、フレーミング クラスの匿名クラスを作成するメソッドがあります (プログラミングの実践でそのような倒錯が行われるとは強く疑っていますが、純粋にスポーツとしての興味のために賢明であることにしたので、石を投げないでください。いずれにせよ、その前に)。簡略化すると次のようになります。
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
localInnerValue
LocalInner
GO TO FULL VERSION