// Java反射机制示例代码
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
class Person {
private String name;
private int age;
public Person() {}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void sayHello() {
System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
}
}
public class ReflectionExample {
public static void main(String[] args) {
try {
// 获取类的Class对象
Class<?> personClass = Class.forName("Person");
// 创建对象实例(无参构造函数)
Constructor<?> constructor1 = personClass.getConstructor();
Object personInstance1 = constructor1.newInstance();
System.out.println("Created instance using no-arg constructor.");
// 创建对象实例(带参构造函数)
Constructor<?> constructor2 = personClass.getConstructor(String.class, int.class);
Object personInstance2 = constructor2.newInstance("Alice", 30);
System.out.println("Created instance using parameterized constructor.");
// 调用方法
Method sayHelloMethod = personClass.getMethod("sayHello");
sayHelloMethod.invoke(personInstance2); // 输出: Hello, my name is Alice and I am 30 years old.
} catch (Exception e) {
e.printStackTrace();
}
}
}
Class.forName("Person")
获取Person
类的Class
对象。personClass.getConstructor().newInstance()
personClass.getConstructor(String.class, int.class).newInstance("Alice", 30)
getMethod("sayHello")
获取sayHello
方法,并使用invoke
方法调用该方法。这段代码展示了如何使用Java反射机制来动态地创建对象和调用方法。
上一篇:java 日期
下一篇:java异或运算
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站