欢迎访问宙启技术站
智能推送

Java反射函数:Class类的常用方法

发布时间:2023-05-31 13:54:07

Java反射是一种机制,能够在运行时动态地获取类的信息,创建对象、调用方法、获取属性等。其中最基本的就是Class类的反射,通过Class类的实例化对象就可以获取类的所有信息。下面介绍Class类的常用方法:

1. getClass()方法

获取一个对象的Class对象,即对象的类型信息,返回值是一个Class对象。例如:

String s = "Hello, world!";
Class<? extends String> cls = s.getClass();

2. forName()方法

获取一个类的Class对象,返回值是一个Class对象。例如:

Class<String> cls = (Class<String>) Class.forName("java.lang.String");

3. newInstance()方法

通过Class对象实例化一个对象,返回值是一个Object对象。例如:

Class<String> cls = String.class;
String str = cls.newInstance();

4. getFields()方法

获取当前类和父类中所有公有的成员变量,返回值是一个Field数组。例如:

Class<Person> cls = Person.class;
Field[] fields = cls.getFields();
for (Field f : fields) {
    System.out.println(f.getName()); // 输出成员变量的名称
}

5. getDeclaredFields()方法

获取当前类中所有成员变量,不包括父类,返回值是一个Field数组。例如:

Class<Person> cls = Person.class;
Field[] fields = cls.getDeclaredFields();
for (Field f : fields) {
    System.out.println(f.getName()); // 输出成员变量的名称
}

6. getMethods()方法

获取当前类和父类中所有公有的方法,返回值是一个Method数组。例如:

Class<Person> cls = Person.class;
Method[] methods = cls.getMethods();
for (Method m : methods) {
    System.out.println(m.getName()); // 输出方法名称
}

7. getDeclaredMethods()方法

获取当前类中所有方法,不包括父类,返回值是一个Method数组。例如:

Class<Person> cls = Person.class;
Method[] methods = cls.getDeclaredMethods();
for (Method m : methods) {
    System.out.println(m.getName()); // 输出方法名称
}

8. getConstructors()方法

获取当前类中所有公有的构造方法,返回值是一个Constructor数组。例如:

Class<Person> cls = Person.class;
Constructor[] constructors = cls.getConstructors();
for (Constructor c : constructors) {
    System.out.println(c.getName()); // 输出构造方法名称
}

9. getDeclaredConstructors()方法

获取当前类中所有构造方法,不包括父类,返回值是一个Constructor数组。例如:

Class<Person> cls = Person.class;
Constructor[] constructors = cls.getDeclaredConstructors();
for (Constructor c : constructors) {
    System.out.println(c.getName()); // 输出构造方法名称
}

10. getSuperclass()方法

获取当前类的父类,返回值是一个Class对象。例如:

Class<Student> cls = Student.class;
Class<? super Student> superclass = cls.getSuperclass();
System.out.println(superclass.getName()); // 输出父类名称

以上就是Class类的常用方法,这些方法可以在运行时动态地获取类的信息,方便了程序的开发。