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