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类的常用方法,这些方法可以在运行时动态地获取类的信息,方便了程序的开发。
