java反射机制运用到BaseDao等通用基类
来源:互联网 发布:徽章制作软件app 编辑:程序博客网 时间:2024/05/01 17:34
反射中主要应用的方法:
1.获取类的Class对象
推荐使用: 第一种。通过Class.forName获取Class对象.//方式1:通过Class.forName获取Class对象.
Class clazz1 = Class.forName("cn.itcast.reflect.Person");
// System.out.println("clazz1:"+clazz1.getSimpleName());
//方式2:可以通过类名获取Class对象。
Class clazz2 = Person.class;
System.out.println("是同一个对象吗?"+(clazz1==clazz2));
//方式3: 可以通过对象获取Class对象
clazz.newInstance()//获取对象
2.获取类中所有的方法
Method[] methods = clazz.getMethods(); // 获取所有公共 的方法,包括继承下来的方法。
Method[] methods = clazz.getDeclaredMethods(); //获取所有的方法,包括私有的,但是不包括继承下来的方法。
for(Method m : methods){
System.out.println(m);
}
Person p = new Person("狗娃",12);
//获取单个方法
Method m = clazz.getMethod("eat", int.class,String[].class) ; //第一个参数是方法名, 第二参数是形参列表的数据类型。
//执行一个方法
Person p = new Person("狗娃",12);
m.invoke(p, 3,new String[]{"aa","bb"}); //第一个参数:方法的调用者对象, 第二参数: 方法执行所需要的参数。
Method m = clazz.getMethod("sleep", int.class);//获取其中名为sleep的方法
m.invoke(null, 23);//调用sleep方法
这里书写关于反射应用的通用基类:(同时一样可以运用于通用工具类)
private Class<T> clazz;
public BaseDaoImpl(){
//获取当前运行类泛型父类类型,即为参数化类型,有所有类型公用的高级接口Type接收!
Type type = this.getClass().getGenericSuperclass();
//强转为参数化类型
ParameterizedType param = (ParameterizedType)type;//BaseDao<Department>
Type[] types = param.getActualTypeArguments();//获取BaseDao中的泛型,因为可能有多个所以为数组
clazz = (Class<T>) types[0];//取第一个泛型,即Department赋给clazz
}
通过创建BaseDaoImpl对象类之后,通过构造方法会将泛型中调用的对象的Class对象封装到定义好的clazz中,
接下来就可以在下面的方法书写时调用这个类。
0 0
- java反射机制运用到BaseDao等通用基类
- java通用basedao
- 利用Java反射机制+泛型重新封装的BaseDao
- java反射机制和运用
- java反射机制的运用
- JAVA 反射机制简单运用
- java反射机制的运用
- JAVA反射机制运用教程
- java泛型详解和反射泛型通用BaseDao实现
- Java反射机制 以及 method.invoke运用
- Java反射机制的运用-Json解析
- JAVA JDBC通用BaseDao版0.1
- java JDBC通用BaseDao升级版0.2
- java JDBC通用BaseDao升级版0.3
- basedao 反射
- 运用反射机制捕获类的原型
- 反射机制的运用
- 反射机制的运用
- picasso 缓存位置
- C++ 程序内存泄漏检测方法
- ajax 设置Access-Control-Allow-Origin实现跨域访问
- 转换说明符及其作为结果打印
- maven项目ssh框架 ajax返回json对象xml配置
- java反射机制运用到BaseDao等通用基类
- javascript 获取当前 URL 参数的两种方法:
- 圣墟(圣墟最新章节,圣墟无弹窗全文阅读,圣墟无广告全文阅读)
- springMvc 自定义错误处理--HandlerExceptionResolver
- H5动效的常见制作手法
- WWDC2016 Session笔记 - iOS 10 UICollectionView新特性
- 第三方接口开发规范
- Java过滤器与SpringMVC拦截器之间的关系与区别
- Erdaicms旅游网站程序微信公众号及微信支付参数配置教程