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