Java笔记 使用反射来改进BaseDao
关于反射 反射的定义(via Wiki):在计算机科学中,反射是指一种特定类型的计算机程序能够在运行时以一种依 赖于它的代码的抽象特性和它的运行时行为的方式被更改的特性。用比喻来说,那种程式能够"观察“并且修改自己的行为。 Java中的反射示例如下: package dddspace.job.exercise1116; public class Foo { public void fun(String str) { System.out.println(str); } } package dddspace.job.exercise1116; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ReflectionDemo { public static void main(String[] args) throws SecurityException, NoSuchMethodException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { // 不使用反射 Foo foo = new Foo(); foo.fun("no reflection"); // 使用反射 String className = "dddspace.job.exercise1116.Foo"; String funName = "fun"; // 获取类名 Class cls = Class.forName(className); // 创建Object实例 Object foo2 = cls.newInstance(); // 创建Method hello Method method = cls.getMethod("fun", String.class); // 使用反射来调用Method的invode方法,参数是目标对象+参数 method.invoke(foo, "use reflection"); } } 原始BaseDao设计 我先阐述一下BaseDao的设计想法:BaseDao是一个抽象类,提供一系列Dao方法”get()/getAll()/add()/update()/delete()/getCount()",通过泛型匹配的获取类,我取出一个方法来做示例。 ...