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

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.