目前经理要求在做一个业务统计的程序,他要求把写好的类存入数据库,类比如是org.com.test.HelloDate,数据库就是存放这个,然后由启动统计的主方法调用数据库存放的这个类来实现统计,这个究竟在java里是什么原理?如何实现呢?求给位高手帮忙解答
Java反射Reflect机制啊。
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class clazz = loader.loadClass("org.com.test.HelloDate");
//获取类的默认构造器并初始化HelloDate
Constructor constructor = clazz.getDeclaredConstructor((Class[])null);
HelloDate instance = (HelloDate)constructor.newInstance();
//通过反射方法设置属性
Method setXxxx = clazz.getMethod("setXxxx",String.class);
setXxxx.invoke(instance,"xxxx");
...
return instance;
大概就这样了,具体关于java反射的东西可以google找找。
把类存入数据库??他的意思是把那数据存入该类对应的表吧 在由别人调用表里的数据 实现统计功能
不是,是把统计实现类的包路径存到数据库,然后程序去查询数据库得到这个类的包路径,并且自动加载这个类执行统计方法
。。不太懂,是不是知道类的属性,一个个个存呗。。。
这个里边涉及几个技术点。
首先是类的序列化,然后要通过ClassLoader进行动态类加载
这是一种思路
另外可以考虑通过drools或者groovy这样的引擎来实现代码的动态调用