วิธีการใช้ Anonymous Class ใน Java



บล็อกนี้จะให้ความรู้โดยละเอียดและครอบคลุมเกี่ยวกับคลาส Anonymous ใน Java พร้อมตัวอย่างและความแตกต่างจากคลาสทั่วไปอย่างไร

ชั้นเรียนที่ไม่ระบุชื่อช่วยให้คุณสามารถเขียนโค้ดขนาดเล็กและให้คุณประกาศและสร้างอินสแตนซ์ชั้นเรียนได้ในเวลาเดียวกัน คลาสเหล่านี้ไม่มีชื่อใช้เมื่อคุณต้องการใช้คลาสใด ๆ เพียงครั้งเดียว เป็นสิ่งสำคัญของการเขียนโปรแกรม Java เรามาทำความเข้าใจว่า Anonymous Class ใน Java คืออะไรตามลำดับต่อไปนี้:

การประกาศคลาสที่ไม่ระบุตัวตน





โดยปกติเราสร้างคลาสเช่นเราประกาศคลาส แต่คลาสที่ไม่ระบุชื่อเป็นนิพจน์ซึ่งหมายความว่าเรากำหนดคลาสที่ไม่ระบุชื่อในคลาสอื่น นิพจน์ . กล่าวง่ายๆคือคลาสภายในที่ไม่ระบุชื่อคือคลาสที่ไม่มีชื่อและมีเพียงอ็อบเจ็กต์เดียวเท่านั้นที่ถูกสร้างขึ้น

Anonymous-Class-In-Java



คลาส Anonymous มีประโยชน์เมื่อเราต้องสร้างอินสแตนซ์ของอ็อบเจ็กต์ด้วยวิธีการโอเวอร์โหลดของคลาสหรืออินเทอร์เฟซโดยไม่ต้องสร้างคลาสย่อยของคลาส

Anonymous สามารถสร้างได้สองวิธี:

  • คลาส (สามารถเป็นนามธรรมได้เช่นกัน)
  • อินเตอร์เฟซ

ในคลาสที่ไม่ระบุชื่อเราสามารถประกาศสิ่งต่อไปนี้:



  • ฟิลด์
  • วิธีการพิเศษ
  • Instance Initializers
  • ชั้นเรียนในท้องถิ่น

ไวยากรณ์ของคลาส Anonymous ใน Java

ไวยากรณ์ของคลาสที่ไม่ระบุชื่อก็เหมือนกับตัวสร้างยกเว้นว่าจะมีนิยามคลาสในบล็อกดังที่แสดงในตัวอย่างด้านล่าง:

// AnonymousClass = อินเตอร์เฟสคลาสนามธรรม / คอนกรีต AnonymousClass t = AnonymousClass ใหม่ () {// วิธีการและฟิลด์โมฆะสาธารณะ someMethod () {// code ไปที่นี่}}

ลองดูตัวอย่างต่อไปนี้:

ตัวอย่างต่อไปนี้สวัสดี AnonymousClassใช้คลาสที่ไม่ระบุชื่อในคำสั่งการเริ่มต้นของตัวแปรโลคัลทักทายแต่ใช้คลาสโลคัลสำหรับการเริ่มต้นตัวแปรทักทายโลก:

คลาสสาธารณะ HelloAnonymousClass {อินเทอร์เฟซ HelloWorld {โมฆะสาธารณะ sayHello () โมฆะสาธารณะ sayHelloTo (สตริงคน)} โมฆะสาธารณะ sayHello () {คลาส GreetWorld ดำเนินการ HelloWorld {String name = 'world' โมฆะสาธารณะ sayHello () {sayHelloTo ('world')} โมฆะสาธารณะ sayHelloTo (String someone) {name = someone System.out.println ('Hello' + name)}} HelloWorld GreetWorld = new GreetWorld () HelloWorld GreetSomeone = new HelloWorld () {String name = 'jon' public void sayHello ( ) {sayHelloTo ('Jon')} โมฆะสาธารณะ sayHelloTo (สตริงคน) {name = someone System.out.println ('hola' + name)}} greetingWorld.sayHello () GreetSomeone.sayHelloTo ('Doe')} แบบคงที่สาธารณะ เป็นโมฆะหลัก (String ... args) {HelloAnonymousClass myApp = new HelloAnonymousClass () myApp.sayHello ()}}

ดังที่เราได้เห็นแล้วว่าคลาสที่ไม่ระบุชื่อเป็นนิพจน์ไวยากรณ์ก็เหมือนกับตัวสร้างยกเว้นมีนิยามคลาสในบล็อก พิจารณาการสร้างอินสแตนซ์ของออบเจ็กต์ GreetSomeone:

HelloWorld GreetSomeone = new HelloWorld () {String name = 'jon' public void sayHello () {sayHelloTo ('Jon')} โมฆะสาธารณะ sayHelloTo (สตริงคน) {name = someone System.out.println ('hola' + name) }}

คลาสที่ไม่ระบุชื่อประกอบด้วยสิ่งต่อไปนี้:

  • ตัวดำเนินการใหม่
  • สามารถใช้อินเทอร์เฟซหรือขยายคลาสได้ ดังตัวอย่างข้างต้นมันกำลังใช้งานอินเทอร์เฟซ
  • มันมีวงเล็บเหมือนกับคลาสปกติเพื่อส่งผ่านอาร์กิวเมนต์ไปยังตัวสร้าง
  • มีเนื้อหาที่มีการประกาศวิธีการ ไม่อนุญาตให้ประกาศ

คลาสที่ไม่ระบุชื่อควรเป็นส่วนหนึ่งของคำสั่ง

อัลกอริทึมการเรียนรู้ของเครื่องใน r

ในตัวอย่างข้างต้นนิพจน์คลาสที่ไม่ระบุชื่อเป็นส่วนหนึ่งของคำสั่งที่เริ่มต้นโดยทักทาย.

วิธีสร้างคลาส Anonymous ใน Java

มี 3 วิธีในการสร้าง Inner Class ใน Java

  • โดยการขยายคลาส

เราสามารถสร้างคลาสภายในแบบไม่ระบุชื่อได้โดยการขยายคลาสอื่นสมมติว่าเราต้องสร้างเธรดโดยใช้คลาสเธรดเราสามารถสร้างคลาสภายในแบบไม่ระบุชื่อแทนการสร้างคลาสแยก

// โปรแกรมแสดงคลาส Anonymous Inner โดยขยายคลาสอื่น ๆ AnonymousThreadClass {public static void main (String [] args) {// Anonymous Inner class ที่ขยาย Thread class Thread t = new Thread () {public void run () {System .out.println ('Child!')}} t.start () System.out.println ('Parent!')}}

เอาท์พุต:

พ่อแม่!

เด็ก!

  • โดยการใช้อินเทอร์เฟซ

นอกจากนี้เรายังสามารถสร้างคลาสภายในแบบไม่ระบุตัวตนได้โดยใช้อินเทอร์เฟซ ตอนนี้เมื่อเราสร้างคลาสภายในโดยการขยายคลาสในทำนองเดียวกันเราสามารถสร้างคลาสที่ใช้อินเทอร์เฟซได้

// โปรแกรมเพื่อแสดงคลาส Anonymous Inner โดยใช้อินเทอร์เฟซคลาส AnonymousThreadClass {public static void main (String [] args) {// Anonymous Inner class ที่ใช้ interface Runnable r = new Runnable () {public void run () {System.out .println ('Child!')}} เธรด t = เธรดใหม่ (r) t.start () System.out.println ('Parent!')}}

เอาท์พุต:

พ่อแม่!

เด็ก!

  • เป็นอาร์กิวเมนต์ของ Method / Constructor

เพื่อทำความเข้าใจไวยากรณ์ให้ดูตัวอย่างด้านล่าง:

// โปรแกรมเพื่อแสดงคลาส Anonymous Inner โดยคลาสอาร์กิวเมนต์ AnonymousThreadClass {public static void main (String [] args) {// Anonymous class with constructor argument Thread t = new Thread (new Runnable () {public void run () {System. out.println ('Child!')}}) t.start () System.out.println ('Parent!')}}

เอาท์พุต:

พ่อแม่!

เด็ก!

ความแตกต่างระหว่างชั้นในแบบปกติและแบบไม่เปิดเผยตัวตน

  • เราสามารถนำไปใช้ อินเทอร์เฟซหลายหมายเลข โดยใช้คลาสปกติ แต่ด้วยคลาสภายในที่ไม่ระบุชื่อเราสามารถใช้อินเทอร์เฟซเดียวเท่านั้น

  • ด้วยชั้นเรียนปกติเราสามารถทำได้ ขยายชั้นเรียน และยังใช้หลายอินเทอร์เฟซ แต่ด้วยคลาสภายในที่ไม่ระบุชื่อเราสามารถขยายคลาสหรือใช้อินเทอร์เฟซได้ แต่ไม่สามารถใช้ทั้งสองอย่างพร้อมกันได้

  • ไม่ระบุชื่อเรา ไม่สามารถเขียนตัวสร้างได้ เนื่องจากคลาสภายในที่ไม่ระบุชื่อไม่มีชื่อและชื่อของตัวสร้างควรจะเหมือนกับชื่อคลาส

ในบทความนี้เราได้เห็นว่าคลาสภายในที่ไม่ระบุชื่อคืออะไรและเราจะสร้างคลาสได้อย่างไร เราได้อ่านไวยากรณ์ของคลาสภายในที่ไม่ระบุชื่อและวิธีที่เราสามารถสร้างคลาสที่ไม่ระบุชื่อได้ใน 3 วิธีและด้วยเหตุนี้เราจึงมาถึงจุดสิ้นสุดของคลาส Anonymous ในบทความ Java ตรวจสอบไฟล์ โดย Edureka

มีคำถาม? ระบุไว้ในส่วนความคิดเห็นของบทความนี้แล้วเราจะติดต่อกลับโดยเร็วที่สุด