Java 检查给定的类是否是匿名类

Java 检查给定的类是否是匿名类

没有名称的嵌套内部类称为匿名类。在制作一个Java程序来检查给定的类是否是匿名类之前,我们需要了解嵌套类的概念。让我们详细讨论这个问题。

嵌套类

当我们在另一个类中创建类时,它被称为嵌套类。嵌套类共享相同的范围。它允许将类进行分组,并增加了封装(封装意味着将类似的功能放在一个单元中)。在Java中,我们知道不能使用private访问修饰符定义一个类,但是我们可以将嵌套类定义为private。有两种类型的嵌套类可用:静态和非静态嵌套类。

静态嵌套类使用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中嵌套和内部类的概念。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程