Sugeng dina kanggo kabeh! Aku wiwit nggali luwih jero menyang jinis kelas lan nulis kode sing ngemot kelas kasebut. Kelas iki ngemot metode
main()
lan kelas nested statis. Kelas nested statis ngemot metode. Cara nggawe kelas lokal. Kelas lokal nduweni cara sing nggawe kelas anonim saka kelas framing (Aku mangu-mangu yen perversions kuwi njupuk Panggonan ing laku program, nanging marga saka kapentingan sejatine sifate olahraga aku mutusaké kanggo dadi pinter, supaya please ora uncalan watu. Sadurunge wektu, ing kasus apa wae). Sederhana katon kaya iki:
class Outer { // ОБРАМЛЯЮЩИЙ КЛАСС
static class Inner { // СТАТИЧЕСКИЙ ВЛОЖЕННЫЙ КЛАСС
int doInnerThings() { // ЛОКАЛЬНЫЙ МЕТОД ВНУТРЕННЕГО КЛАССА
class LocalInner { // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ КЛАСС
int doLocalInnerThings() { // МЕТОД ЛОКАЛЬНОГО КЛАССА
new Outer(5) {}; // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ АНОНИМНЫЙ КЛАСС
}
}
}
}
}
Sasaran: nggawe variabel ing kelas anonim nggunakake kelas super framing, lan "mbuwang" argumen variabel iki nganti tekan kelas njero, ditugasake menyang variabel kelas njero. Ing ngisor iki kode sing rada ditambahi, kanthi sketsaku.
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);
}
}
Masalah: metode int doInnerThings()
Aku ora bisa nemtokake innerValue
nilai variabel localInnerValue
" saka kelas lokal menyang variabel metode iki LocalInner
. Aku bakal seneng mbantu! :)
GO TO FULL VERSION