java的预定义Class对象的方法
封面图
•
2025-10-09
•
Java
247
0
0
0
在 Java 中,`Class` 类是用于表示类和接口的运行时信息的类。Java 提供了一些预定义的 `Class` 对象的方法,用于获取类的信息、创建实例、检查类的特性等。 以下是一些常用的 `Class` 类的预定义方法: --- ### 1. **`getName()`** - **作用**:返回类的全限定名(包括包名)。 - **示例**: ```java Class<?> clazz = String.class; System.out.println(clazz.getName()); // 输出: java.lang.String ``` --- ### 2. **`getSimpleName()`** - **作用**:返回类的简单名称(不包含包名)。 - **示例**: ```java Class<?> clazz = String.class; System.out.println(clazz.getSimpleName()); // 输出: String ``` --- ### 3. **`getCanonicalName()`** - **作用**:返回类的规范名称(如嵌套类或内部类的格式)。 - **示例**: ```java Class<?> clazz = String.class; System.out.println(clazz.getCanonicalName()); // 输出: java.lang.String ``` --- ### 4. **`isInterface()`** - **作用**:判断该类是否为接口。 - **示例**: ```java Class<?> clazz = List.class; System.out.println(clazz.isInterface()); // 输出: true ``` --- ### 5. **`isEnum()`** - **作用**:判断该类是否为枚举类型。 - **示例**: ```java Class<?> clazz = Day.class; // 假设 Day 是一个 enum System.out.println(clazz.isEnum()); // 输出: true ``` --- ### 6. **`isAnnotation()`** - **作用**:判断该类是否为注解类型。 - **示例**: ```java Class<?> clazz = MyAnnotation.class; System.out.println(clazz.isAnnotation()); // 输出: true ``` --- ### 7. **`getSuperclass()`** - **作用**:返回该类的直接父类的 `Class` 对象。 - **示例**: ```java Class<?> clazz = String.class; System.out.println(clazz.getSuperclass()); // 输出: class java.lang.Object ``` --- ### 8. **`getInterfaces()`** - **作用**:返回该类实现的所有接口的 `Class` 数组。 - **示例**: ```java Class<?> clazz = ArrayList.class; for (Class<?> iface : clazz.getInterfaces()) { System.out.println(iface.getName()); } // 输出: java.util.List, java.util.RandomAccess, java.lang.Cloneable, java.io.Serializable ``` --- ### 9. **`newInstance()`** - **作用**:创建该类的一个实例(需要默认构造函数)。 - **示例**: ```java Class<?> clazz = String.class; Object obj = clazz.newInstance(); // 创建 String 实例 ``` > ⚠️ 注意:从 Java 9 开始,`newInstance()` 被标记为 **deprecated**,推荐使用 `Constructor.newInstance()`。 --- ### 10. **`getDeclaredClasses()`** - **作用**:返回该类中声明的所有内部类和嵌套类。 - **示例**: ```java Class<?> clazz = Outer.class; Class<?>[] nestedClasses = clazz.getDeclaredClasses(); ``` --- ### 11. **`getDeclaredMethods()`** - **作用**:返回该类中声明的所有方法(包括私有方法)。 - **示例**: ```java Class<?> clazz = MyClass.class; Method[] methods = clazz.getDeclaredMethods(); ``` --- ### 12. **`getDeclaredFields()`** - **作用**:返回该类中声明的所有字段(包括私有字段)。 - **示例**: ```java Class<?> clazz = MyClass.class; Field[] fields = clazz.getDeclaredFields(); ``` --- ### 13. **`getModifiers()`** - **作用**:返回类的访问修饰符(如 public, private, static 等)。 - **示例**: ```java Class<?> clazz = String.class; int modifiers = clazz.getModifiers(); System.out.println(Modifier.toString(modifiers)); // 输出: public final ``` --- ### 14. **`getPackage()`** - **作用**:返回该类所属的包对象。 - **示例**: ```java Class<?> clazz = String.class; Package pkg = clazz.getPackage(); System.out.println(pkg.getName()); // 输出: java.lang ``` --- ### 15. **`getAnnotations()`** - **作用**:返回该类上的所有注解。 - **示例**: ```java Class<?> clazz = MyClass.class; Annotation[] annotations = clazz.getAnnotations(); ``` --- ### 16. **`isPrimitive()`** - **作用**:判断该类是否是基本类型(如 int, boolean 等)。 - **示例**: ```java Class<?> clazz = int.class; System.out.println(clazz.isPrimitive()); // 输出: true ``` --- ### 17. **`isArray()`** - **作用**:判断该类是否是数组类型。 - **示例**: ```java Class<?> clazz = int[].class; System.out.println(clazz.isArray()); // 输出: true ``` --- ### 18. **`getComponentType()`** - **作用**:如果该类是数组,则返回数组元素的类型。 - **示例**: ```java Class<?> clazz = int[].class; System.out.println(clazz.getComponentType()); // 输出: int ``` --- ## 总结 | 方法 | 说明 | |------|------| | `getName()` | 获取类的全限定名 | | `getSimpleName()` | 获取类的简单名称 | | `getSuperclass()` | 获取父类 | | `getInterfaces()` | 获取实现的接口 | | `getDeclaredMethods()` | 获取所有声明的方法(包括私有) | | `getDeclaredFields()` | 获取所有声明的字段(包括私有) | | `newInstance()` | 创建类的实例(已弃用) | | `isInterface()` | 判断是否为接口 | | `isEnum()` | 判断是否为枚举 | | `isAnnotation()` | 判断是否为注解 | 如果你对某个特定方法有疑问,或者想了解如何使用反射机制,我可以进一步解释。
上一篇:
JavaSE中compare、compareTo有什么区别
下一篇:
java中switch语句的用法介绍
标题录入,一次不能超过6条
留言
评论