学习 Java 中 Class 类及其用法
什么是 Class 类
在 Java 中,每个对象都有与之相关联的 Class
类。可以将 Class
看作是一份对象的“说明书”,里面包含着这个对象的所有属性和方法。
在 Java 中,可以使用 getClass()
方法来获取一个对象的 Class
类,也可以使用 .class
来获取某个类的 Class
类。例如:
String str1 = "Hello";
Class clazz1 = str1.getClass(); // 获取字符串对象 str1 的 Class 类
Class clazz2 = String.class; // 获取字符串类 String 的 Class 类
Class 类的常用方法
获取类名
Class
类中的 getName()
方法可以获取类的完整类名,例如:
String str1 = "Hello";
String clazzName = str1.getClass().getName(); // 获取字符串对象 str1 的类名
System.out.println(clazzName); // 输出 java.lang.String
获取类的属性信息
在 Class
类中,可以使用 getFields()
方法来获取类的所有公有字段,也可以使用 getDeclaredFields()
来获取类的所有属性(包括私有属性)。例如:
class Person {
public String name;
private int age;
}
Person p = new Person();
Field[] fields = p.getClass().getDeclaredFields(); // 获取类的所有属性
for (Field f : fields) {
System.out.println(f.getName()); // 输出类的属性名
}
获取类的方法信息
在 Class
类中,可以使用 getMethods()
方法来获取类的所有公有方法,也可以使用 getDeclaredMethods()
来获取类的所有方法(包括私有方法)。例如:
class Person {
public void sayHello() {
System.out.println("Hello");
}
private void sayHi() {
System.out.println("Hi");
}
}
Person p = new Person();
Method[] methods = p.getClass().getDeclaredMethods(); // 获取类的所有方法
for (Method m : methods) {
System.out.println(m.getName()); // 输出类的方法名
}
示例说明
示例 1:使用 Class 类获取系统类装载器
Class clazz = Class.forName("java.lang.String");
ClassLoader loader = clazz.getClassLoader();
System.out.println(loader); // 输出系统类装载器,通常是 sun.misc.Launcher$AppClassLoader@xxxxxx
示例 2:动态创建对象
Class clazz = Class.forName("com.example.Person"); // 获取类的 Class 类
Person p = (Person) clazz.newInstance(); // 动态创建对象
p.setName("Tom");
p.setAge(18);
这里需要注意的是,使用 newInstance()
方法创建对象时,必须保证类中有一个无参的构造函数。如果没有,则会抛出 InstantiationException
异常。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:学习Java中Class类及其用法 - Python技术站