Java中Class类的基础知识点及实例
Class类的概念
Class
类是 Java 中用于描述类类型的类,它是所有类、接口、数组在内存中的一个表示。Class
对象是在类被加载的时候创建的,它保存了类的相关信息,例如类的名称、类的成员变量、类的方法等。
通过 Class
对象,我们可以对类进行一些操作,例如创建该类的实例、获取它所包含的方法以及构造函数等信息。
获取Class对象的方法
Java中有三种获取Class对象的方法,分别是:
- 对象.getClass() 方法
- 类.class表达式
- Class.forName() 静态方法
对象.getClass() 方法
当我们获得一个对象的引用时,可以通过对象的 getClass()
方法获取该对象的 Class
对象。
// 将一个字符串的实例赋值给str变量
String str = "Hello, World!";
// 获取该字符串实例的Class对象
Class strClass = str.getClass();
类.class表达式
在构造对象之前,我们可以直接使用类名 .class
表达式获取 Class
对象。
// 获取String的Class对象
Class strClass = String.class;
Class.forName() 静态方法
使用 Class.forName()
方法可以根据类的全限定名获取 Class
对象,该方法常用于动态加载类。
// 获取String类的Class对象
Class strClass = Class.forName("java.lang.String");
Class类的常用方法
构造函数
通过 Class 对象提供的 newInstance()
方法,我们可以在运行时通过反射来创建一个类的实例。
// 获取String类的Class对象
Class strClass = String.class;
// 通过newInstance()方法创建String实例
String str = (String)strClass.newInstance();
获取成员变量
我们可以使用 getFields()
方法获取类的所有 public 成员变量,使用 getDeclaredFields()
方法获取类的所有成员变量。获取到的成员变量都会以 Field
类型的对象返回。
// 获取String类的Class对象
Class strClass = String.class;
// 获取public成员变量
Field[] fields = strClass.getFields();
// 获取所有成员变量(不包括父类中的)
Field[] declaredFields = strClass.getDeclaredFields();
获取方法
我们可以使用 getMethods()
方法获取类的所有 public 方法,使用 getDeclaredMethods()
方法获取类的所有方法。获取到的方法都会以 Method
类型的对象返回。
// 获取String类的Class对象
Class strClass = String.class;
// 获取public方法
Method[] methods = strClass.getMethods();
// 获取所有方法(不包括父类中的)
Method[] declaredMethods = strClass.getDeclaredMethods();
示例
我们使用 Class
类的 newInstance()
方法和 getDeclaredFields()
方法来获取类中的成员变量。
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Main {
public static void main(String[] args) {
try {
// 获取Person类的Class对象
Class personClass = Class.forName("com.example.Person");
// 通过newInstance()方法创建Person实例
Person person = (Person)personClass.newInstance();
// 获取Person类中的所有成员变量
Field[] fields = personClass.getDeclaredFields();
// 输出成员变量的名称
for (Field field : fields) {
System.out.println(field.getName());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出结果为:
name
age
我们使用 Class
类的 getDeclaredMethods()
方法来获取类中的方法。
public class Student {
public void study() {
System.out.println("学生正在学习...");
}
private void sleep() {
System.out.println("学生正在休息...");
}
}
public class Main {
public static void main(String[] args) {
try {
// 获取Student类的Class对象
Class studentClass = Class.forName("com.example.Student");
// 获取Student类中的所有方法
Method[] methods = studentClass.getDeclaredMethods();
// 输出方法的名称和访问修饰符
for (Method method : methods) {
System.out.println(method.getName() + " " + Modifier.toString(method.getModifiers()));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出结果为:
study public
sleep private
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中Class类的基础知识点及实例 - Python技术站