ขอให้เป็นวันที่ดีสำหรับทุกคน! ฉันเริ่มเจาะลึกลงไปในประเภทของคลาสและเขียนโค้ดที่มีคลาสนั้น คลาสนี้มีวิธีการ
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