Java程式:檢查給定類是否為匿名類


沒有名稱的巢狀內部類的型別稱為匿名類。在編寫Java程式來檢查給定類是否為匿名類之前,我們需要理解巢狀類的概念。讓我們詳細討論一下。

巢狀類

當我們在另一個類中建立類時,它被稱為巢狀類。巢狀類共享相同的範圍。它允許對相似的類進行分組,並提高封裝性(封裝意味著將類似的功能包裝在一個單元中)。在Java中,我們知道類不能用私有訪問說明符定義,但我們可以將巢狀類定義為私有。有兩種型別的巢狀類可用:靜態巢狀類和非靜態巢狀類。

靜態巢狀類使用static修飾符定義,而非靜態巢狀類不使用static關鍵字定義,也稱為內部類。

內部類

非靜態或內部類可以訪問其外部類的所有靜態和非靜態方法和成員變數。它也可以訪問私有成員,但是,外部類不能訪問內部類的私有成員。內部類是最常用的巢狀類型別。我們將在本文後面討論其型別。

語法

class Class_otr {
   // Outer class body
   class Class_inn { 
      // Inner class body
   }
} 

要建立類,我們使用了“class”關鍵字。“Class_otr”是外部類的名稱,“Class_inn”是內部類的名稱。

示例

以下程式演示了內部類。

示例

class Cart {  
   // Outer class
   private String item1 = "Rice";
   private class Bill {   
      public void info() {
         System.out.println("This is an inner class");
         // accessing private member ‘item1’
         System.out.println("Item 1 in Cart is: " + item1);
      }
   }
   void display() {
      Bill ob = new Bill(); 
      // creating object of class Bill
      ob.info(); 
      // method calling using object ‘ob’
   }
}
public class Main {
   public static void main(String args[]) {
      Cart obj = new Cart(); 
      // creating object of class Cart
      obj.display(); 
      // calling method of outer class Cart using its object
   }
}

輸出

This is an inner class
Item 1 in Cart is: Rice

在上面的程式中,“Cart”類是“Bill”的外部類。我們建立了一個可以訪問外部類私有成員“item1”的方法“info”。請注意,“Bill”是一個私有類,我們在外部類的“display()”方法內部建立了它的物件。“Cart”的物件是在main方法內部建立的。當我們呼叫“display()”方法時,它會自動呼叫“Bill”類的成員。因此我們得到了那個輸出。

程式:檢查給定類是否為匿名類

內部類主要有兩種型別:

  • 區域性內部類 - 它在方法塊內定義。我們也可以在迴圈體中定義它。就像區域性變數和方法一樣,它的作用域在其定義的方法或迴圈塊內。

  • 匿名內部類 - 這是沒有名稱的內部類型別。它的宣告和初始化同時發生。它主要用於重寫方法。

    我們可以使用abstract關鍵字宣告匿名類。

語法

Class_name object_name = new Class_name() {
   return_type method_name(){
      // code to be executed
   }
};

我們將使用以下Java內建方法來檢查給定類是否為匿名類:

  • getClass() - 它返回指定物件的類。

  • isAnonymousClass() - 如果給定類是匿名類,則返回true;否則返回false。

示例

import java.lang.*;
abstract class Anonymous { 
   // abstract class
   abstract public void display(); 
   // abstract method
}
public class Main {
   public static void main(String args[]) {
      Anonymous obj = new Anonymous() { 
         // anonymous inner class
         public void display() { 
            // overriding display() method
            System.out.println("I am display method of anonymous inner class");
         }
      };
      obj.display(); 
      // calling display() method
      // fetching the name of class of object ‘obj’ i.e. Anonymous
      Class cls = obj.getClass(); 
      // Checking if class ‘Anonymous’ is anonymous class or not
      boolean isAnonymous = cls.isAnonymousClass();
      // Printing the Boolean result
      System.out.println("Is Anonymous a Anonymous class: " + isAnonymous);
   }
}

輸出

I am display method of anonymous inner class
Is Anonymous a Anonymous class: true

結論

在本文中,我們討論了一個Java程式,用於檢查給定類是否為匿名類。在我們的程式中,我們使用了java.lang包的不同內建方法。我們還了解了Java中巢狀類和內部類的概念。

更新於:2023年5月2日

瀏覽量:113

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告