如何获取一个Class的对象?
public static void main(String[] args){
//第一种
Class c1 = String.class;
//第二种
//在Java中,每个对象都有一个getClass()方法,该方法返回对象的Class对象,用于表示该对象所属的类。
String s = "hello,world";
Class c2 = s.getClass();
//第三种,以Book类为例,其实就是动态加载类,注意捕获异常,因为类有可能不存在
try {
Class c3 = Class.forName("com.test.Book");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
Class的对象我们怎么用?
public class Student {
private String name;
private int age;
public static void main(String[] args){
//一般我们把Class的对象叫字节码
Class c = Student.class;
// 外部普通类
System.out.println("Student类名是:" + c.getName());
System.out.println("Student类的简单类名是:" + c.getSimpleName());
System.out.println("Student类有" + c.getDeclaredFields().length + "个字段");
/**
* ....
* 我们可以通过 c (也就是Student这个类的对象,或者你也可以叫做Student类的字节码)
* 拿到Student类中所有的方法名,方法数,字段名,字段数量,甚至你还可以通过Method来调用方法
* 只要查查API,熟悉了API,就能做到
* 暂时我们只打印简单
*/
}
}
Class对象怎么调用类的方法?
Class对象可以用来调用类的方法,具体可以通过以下步骤实现:
-
获取类的Class对象,可以使用Class.forName()方法或者类字面常量方式获取,例如 Class c = MyClass.class;
-
通过Class对象获取方法的Method对象,可以使用getMethod()方法或者getDeclaredMethod()方法,前者只能获取公共方法,后者可以获取所有方法,包括私有方法;
-
通过Method对象调用方法,可以使用invoke()方法,该方法可以传入方法所在对象和方法参数,然后执行该方法并返回结果。
例如,假设有一个名为MyClass的类,其中定义了一个名为printMessage的公共方法,可以使用如下代码调用该方法:
Class c = Class.forName("com.example.MyClass");
Object obj = c.newInstance();
Method method = c.getMethod("printMessage", String.class);
method.invoke(obj, "Hello, World!");
在这里,代码首先获取MyClass类的Class对象,然后创建该类的一个实例对象。接着,使用getMethod()方法获取printMessage方法的Method对象,该方法有一个String类型的参数。最后,通过Method对象调用printMessage方法,并传入参数 "Hello, World!",该方法将打印输出 "Hello, World!"。