Java 判断类是否为内部类:isMemberClass() 方法详解
在Java中,可以使用isMemberClass()方法来判断一个类是否是另一个类的内部类。该方法是Class类的一个成员方法,可以通过使用反射来调用。
下面是一个示例代码:
import java.lang.reflect.Modifier;
public class Main {
public static void main(String[] args) {
// 判断InnerClass是否是OuterClass的内部类
boolean isInnerClass = isInnerClass(OuterClass.InnerClass.class, OuterClass.class);
System.out.println(isInnerClass); // 输出结果为true
// 判断AnotherClass是否是OuterClass的内部类
boolean isAnotherClassInnerClass = isInnerClass(AnotherClass.class, OuterClass.class);
System.out.println(isAnotherClassInnerClass); // 输出结果为false
}
public static boolean isInnerClass(Class<?> innerClass, Class<?> outerClass) {
// 获取内部类的修饰符
int modifiers = innerClass.getModifiers();
// 判断修饰符中是否包含内部类的标识符
if (Modifier.isStatic(modifiers)) {
return false;
}
// 获取内部类的外部类
Class<?> declaringClass = innerClass.getDeclaringClass();
// 判断外部类是否与指定的外部类相同
return declaringClass != null && declaringClass.equals(outerClass);
}
}
class OuterClass {
class InnerClass {
}
}
class AnotherClass {
}
在上述示例代码中,isInnerClass()方法接收两个参数,分别是要判断的内部类和指定的外部类。首先,通过getModifiers()方法获取内部类的修饰符,然后使用Modifier.isStatic()方法判断修饰符中是否包含内部类的标识符。如果包含,则表示该类不是内部类,直接返回false。如果不包含,则使用getDeclaringClass()方法获取内部类的外部类,并判断外部类是否与指定的外部类相同,如果相同则返回true,否则返回false。
原文地址: http://www.cveoy.top/t/topic/tj1 著作权归作者所有。请勿转载和采集!