不多说,先上代码- import java.io.FileInputStream;
- import java.lang.reflect.Constructor;
- import java.util.Collection;
- import java.util.Properties;
- public class ReflectTest2 {
- public static void main(String[] args) throws Exception {
- FileInputStream fis=new FileInputStream("config.properties");
-
- Properties ppt=new Properties();
- ppt.load(fis);
- String className=ppt.getProperty("className");
-
- Constructor con=Class.forName(className).getConstructor();
- Collection setorlist=(Collection) con.newInstance();
-
- setorlist.add(1);
- setorlist.add(2);
- setorlist.add(1);
-
- System.out.println(setorlist.size());
- }
- }
复制代码 在config.properties中更改成不同的集合类就会得到不同的结果
如className=java.util.ArrayList,结果就是3
className=java.util.HashSet,结果就是2,
这就是实现类的动态加载。
我用的不多(基本写些web小项目不用的),但是这是框架的底层实现基础。现在不写框架,肯定是用不上的,但是等学深入了。自己写框架肯定要用的,而且听说反射在安卓中用的也很多,建议好好学下 |