Download Reflect_project/Case_module/src/case_package2/Test.java from zxy0307/Java: direct link, hf CLI and curl.
- Browser
- Download file 1.6 kB
-
https://huggingface.co/zxy0307/Java/resolve/main/Reflect_project/Case_module/src/case_package2/Test.java
- Command line
-
hf download hf://zxy0307/Java/Reflect_project/Case_module/src/case_package2/Test.java
-
curl -L -o Test.java https://huggingface.co/zxy0307/Java/resolve/main/Reflect_project/Case_module/src/case_package2/Test.java
1.6 kB
| package case_package2; | |
| import java.io.FileInputStream; | |
| import java.io.FileNotFoundException; | |
| import java.io.IOException; | |
| import java.lang.reflect.Constructor; | |
| import java.lang.reflect.InvocationTargetException; | |
| import java.lang.reflect.Method; | |
| import java.util.Properties; | |
| public class Test { | |
| public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException { | |
| /* | |
| 反射可以跟配置文件结合的方式,动态的创建对象,并调用方法 | |
| */ | |
| //1、读取配置文件中的信息 | |
| Properties prop = new Properties(); | |
| FileInputStream fis = new FileInputStream("/Users/zhaoxiaoyong" + | |
| "/Documents/Java/Reflect_project/Case_module/prop.properties"); | |
| prop.load(fis); | |
| fis.close(); | |
| System.out.println(prop); | |
| //2、获取全类名和方法名 | |
| String className = (String) prop.get("classname"); | |
| String methodName = (String) prop.get("method"); | |
| System.out.println(className); | |
| System.out.println(methodName); | |
| //3、利用反射创建对象并运行方法 | |
| Class<?> clazz = Class.forName(className); | |
| //获取构造方法 | |
| Constructor<?> con = clazz.getDeclaredConstructor(); | |
| Object o = con.newInstance(); | |
| System.out.println(o); | |
| //获取成员方法并运行 | |
| Method method = clazz.getDeclaredMethod(methodName); | |
| method.setAccessible(true); | |
| method.invoke(o); | |
| } | |
| } | |