下面是题目,想请教思路和代码,只能按java基础的知识来做 -------------------------------------------------------------------------------------------- 已知一个类,定义如下: package cn.itcast.heima; public class DemoClass { public void run() { System.out.println("welcome to heima!"); } } (1) 写一个Properties格式的配置文件,配置类的完整名称。 (2) 写一个程序,读取这个Properties配置文件,获得类的完整名称并加载这个类,用反射 的方式运行run方法。
-------------------------------------------------
//Properties文件名:InputPt.Properties
//内容 自定义吧
//思路就这样了
//Demo 类
package com.ylbbidu.inputpt.test;
public class Demo {
/**
* @param args
*/
public void run(){
System.out.println("hello!Demo!");
}
}
//InputPt类
package com.ylbbidu.inputpt.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Properties;
public class InputPt {
public static void main(String[] args) throws IOException, InstantiationException, IllegalAccessException, ClassNotFoundException {
loadProperties();
}
public static void loadProperties() throws IOException, InstantiationException, IllegalAccessException, ClassNotFoundException {
try {
Properties pt=new Properties();
InputStream fis=new FileInputStream(new File("InputPt.Properties"));//利用Properties类加载配置文件,可以以键值对形式读取数据
pt.load(fis);//
System.out.println(pt);//先测试一下,本例中如果正常会输出"{}"
fis.close();
//*****接着利用反射操作了
/* Class<InputPt> c=InputPt.class;
Field[] fields=c.getDeclaredFields();
for(Field field:fields)
{
if (Modifier.isPrivate(field.getModifiers())) {
System.out.println("a"+field.getName());
}
}*/
//
String pathName=(String) pt.get("com.ylbbidu.inputpt.test.Demo");设置了key,通过配置文件的key取出类的完整名称
System.out.println(pathName);//测试 输出路径
Demo demo=(Demo)Class.forName(pathName).newInstance();
demo.run();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}