编写几个类 (例如Cat,Dog等),然后从键盘输入类名和方法名,程序使用反射机制自动创建该类的对象并调用相应方法。
时间: 2024-03-07 11:49:48 浏览: 51
好的,下面是一个简单的示例程序,用于从键盘输入类名和方法名,然后使用反射机制自动创建该类的对象并调用相应方法:
```
import java.lang.reflect.Method;
import java.util.Scanner;
public class ReflectionDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 从键盘输入类名和方法名
System.out.print("Enter class name: ");
String className = scanner.nextLine();
System.out.print("Enter method name: ");
String methodName = scanner.nextLine();
try {
// 使用反射机制创建对象
Class<?> clazz = Class.forName(className);
Object obj = clazz.newInstance();
// 使用反射机制调用方法
Method method = clazz.getMethod(methodName);
method.invoke(obj);
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 示例类1
class Cat {
public void sayHello() {
System.out.println("Hello, I am a cat.");
}
}
// 示例类2
class Dog {
public void sayHello() {
System.out.println("Hello, I am a dog.");
}
}
```
运行这个程序,可以按照提示输入类名和方法名,例如:
```
Enter class name: Cat
Enter method name: sayHello
```
这样程序就会使用反射机制创建Cat类的对象,并调用它的sayHello方法,输出:
```
Hello, I am a cat.
```
如果输入的是Dog类的类名和sayHello方法名,程序就会创建Dog类的对象,并调用它的sayHello方法,输出:
```
Hello, I am a dog.
```
因此,通过反射机制,我们可以在运行时动态地创建对象并调用方法,这对于实现插件化架构等场景非常有用。
阅读全文