ชนชั้นในนิรนาม เป็นคลาสชั้นในที่ประกาศ ไม่มีชื่อคลาส เลย กล่าวอีกนัยหนึ่ง ชั้นในนิรนามเรียกว่า ชั้นในนิรนาม . เนื่องจากไม่มีชื่อจึงไม่มี คอนสตรัคเตอร์ เพราะเรารู้ว่าชื่อคอนสตรัคเตอร์เหมือนกับชื่อคลาส
เราสามารถกำหนด ชั้นในนิรนาม และสร้างวัตถุโดยใช้ ใหม่ โอเปอเรเตอร์ในเวลาเดียวกันในขั้นตอนเดียว
ไวยากรณ์
ใหม่(รายการอาร์กิวเมนต์){ // คลาสเนื้อหาที่ไม่ระบุชื่อ}
ประเภทของคลาสภายในที่ไม่ระบุชื่อใน Java
- คลาสภายในที่ไม่ระบุตัวตนที่ขยายคลาส
- คลาสภายในที่ไม่ระบุชื่อที่ใช้อินเทอร์เฟซ
- ชั้นในนิรนามเป็นการโต้แย้ง
คลาสภายในที่ไม่ระบุชื่อที่ขยายคลาส
ที่นี่ ใหม่ คำหลักถูกใช้เพื่อสร้างวัตถุของ ชั้นในที่ไม่ระบุชื่อ ที่มีอ้างอิงประเภทระดับผู้ปกครอง
ตัวอย่าง
รถคลาส { public void engineType() { System.out.println("Turbo Engine"); }} คลาสสาธารณะ AnonymousClassDemo { โมฆะคงที่สาธารณะ main (สตริง args []) { รถ c1 =รถใหม่ (); c1.engineType(); รถ c2 =รถใหม่ () { @แทนที่โมฆะสาธารณะ engineType () { System.out.println ("V2 Engine"); } }; c2.engineType(); }}
ผลลัพธ์
เครื่องยนต์ Turbo EngineV2
คลาสภายในที่ไม่ระบุชื่อที่ใช้อินเทอร์เฟซ
ที่นี่ ใหม่ คำหลักถูกใช้เพื่อสร้างวัตถุของ ชั้นในที่ไม่ระบุชื่อ ที่มีอ้างอิงประเภทอินเทอร์เฟซ
ตัวอย่าง
<ก่อนหน้า>ซอฟต์แวร์อินเทอร์เฟซ { โมฆะสาธารณะพัฒนา ();} คลาสสาธารณะ AnonymousClassDemo1 { โมฆะสาธารณะสาธารณะหลัก (สตริง args []) { ซอฟต์แวร์ s =ซอฟต์แวร์ใหม่ () { @แทนที่โมฆะสาธารณะพัฒนา () { System.out.println ( "ซอฟต์แวร์ที่พัฒนาใน Java"); } }; s.พัฒนา(); System.out.println(s.getClass().getName()); }}ผลลัพธ์
ซอฟต์แวร์ที่พัฒนาใน JavaAnonymousClassDemo1$1
ชั้นในนิรนามเป็นอาร์กิวเมนต์
เราสามารถใช้ ชั้นในนิรนาม เป็นอาร์กิวเมนต์เพื่อให้สามารถส่งผ่านไปยังเมธอดหรือตัวสร้าง
ตัวอย่าง
คลาสนามธรรม Engine { โมฆะนามธรรมสาธารณะ engineType ();} คลาสรถ { ขนส่งโมฆะสาธารณะ (เครื่องยนต์ e) { e.engineType (); }} คลาสสาธารณะ AnonymousInnerClassDemo2 { โมฆะคงสาธารณะหลัก (สตริง args []) { ยานพาหนะ v =ยานเกราะใหม่ (); v.transport (เครื่องยนต์ใหม่ () { @แทนที่โมฆะสาธารณะ engineType () { System.out.println ("เครื่องยนต์เทอร์โบ"); } }); }}
ผลลัพธ์
เครื่องยนต์เทอร์โบ