Java程序检查给定类是否为局部内部类


在方法体内部或循环(如for和if)内部定义的嵌套类称为局部内部类。

在编写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 {
   // the outer class for class ‘Bill’
   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(); 
     
      // to create object of class Bill
      ob.info(); 
     
      // method calling using object ‘ob’
   }
}
public class Tutorialspoint {
   public static void main(String args[]) {
      Cart obj = new Cart(); 
     
      // to create object of class Cart
      obj.display(); 
     
      // method calling of outer class Cart using its object
   }
}

输出

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

在上面的程序中,类“Cart”是“Bill”的外部类。我们创建了一个“info”方法,它可以访问外部类的私有成员“item1”。请注意,“Bill”是一个私有类,我们在外部类的“display()”方法中创建了它的对象。“Cart”的对象是在main方法中创建的。当我们调用“display()”方法时,它会自动调用类“Bill”的成员。因此,我们得到了该输出。

检查局部内部类的程序

内部类主要有两种类型:

  • 局部内部类 - 它定义在方法块内。我们也可以在循环体中定义它。就像局部变量和方法一样,它的作用域在其定义所在的方法或循环块内。

  • 匿名内部类 - 它是没有名称的内部类类型。

我们将使用以下Java内置方法来检查指定的类是否为局部内部类。

  • getClass() - 它返回指定对象的类。

  • getEnclosingClass() - 如果存在任何局部或匿名类,则返回封闭类,否则返回null。

  • isLocalClass() - 如果指定对象的类是局部类,则返回true,否则返回false。

要使用上面讨论的方法,我们需要导入下面提到的包:

import java.lang.*; 

示例

import java.lang.*;
public class Otr { 
   // It is the outer class
   public static void main(String[] args){
      class LocalInner{
         public void show(){
            System.out.println("I am local inner class");
            System.out.println("Name of Outer Class of LocalInner class is: " + getClass().getEnclosingClass()); 
            // to fetch the name of its outer class
         }
      }
      LocalInner ob= new LocalInner();
      // Creating object of ‘Inner’ class
      ob.show();
      // fetching the name of class of object ‘ob’ i.e. LocalInner
      Class cls = ob.getClass();
      // Checking if class ‘LocalInner’ is local class or not
      boolean isLocal = cls.isLocalClass();
      // Printing the Boolean result
      System.out.println("Is LocalInner a local inner class: " + isLocal);
   }
} 

输出

I am local inner class
Name of Outer Class of LocalInner class is: class Otr
Is LocalInner a local inner class: true

由于“isLocalClass()”方法返回true,并且我们也获得了外部类的名称。“LocalInner”类是一个局部内部类。

结论

在本文中,我们讨论了一个Java程序来检查给定类是否为局部内部类。在我们的程序中,我们使用了java.lang包的不同内置方法。我们还了解了Java中嵌套类和内部类的概念。

更新于: 2023年5月2日

176 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.