Buongiorno a tutti! Ho iniziato ad approfondire i tipi di classi e ho scritto il codice che contiene la classe. Questa classe contiene un metodo
main()
e una classe nidificata statica. Una classe nidificata statica contiene un metodo. Il metodo crea una classe locale. La classe locale ha un metodo che crea una classe anonima della classe di framing (dubito fortemente che tali perversioni avvengano nella pratica di programmazione, ma per motivi di interesse puramente sportivo ho deciso di fare il furbo, quindi per favore non lanciate pietre. Prima del tempo, in ogni caso). Semplificato appare così:
class Outer { // ОБРАМЛЯЮЩИЙ КЛАСС
static class Inner { // СТАТИЧЕСКИЙ ВЛОЖЕННЫЙ КЛАСС
int doInnerThings() { // ЛОКАЛЬНЫЙ МЕТОД ВНУТРЕННЕГО КЛАССА
class LocalInner { // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ КЛАСС
int doLocalInnerThings() { // МЕТОД ЛОКАЛЬНОГО КЛАССА
new Outer(5) {}; // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ АНОНИМНЫЙ КЛАСС
}
}
}
}
}
Obiettivo: creare una variabile in una classe anonima utilizzando una super classe di framing e "lanciare" l'argomento di questa variabile fino alla classe interna, assegnandolo rispettivamente alla variabile della classe interna. Di seguito è riportato un codice leggermente espanso, con i miei schizzi.
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);
}
}
Problema: metodo int doInnerThings()
non riesco ad assegnare innerValue
il valore di una variabile localInnerValue
"da una classe locale a una variabile di questo metodo LocalInner
. Sarei felice di aiutarti! :)
GO TO FULL VERSION