通过反射获取属性名和属性类型
来源:互联网 发布:wps数据透视表教程 编辑:程序博客网 时间:2024/05/19 00:47
提出问题:
还是泛型dao中遇到的问题,以往我们要查询数据库中表中的数据的时候,需要每张表都会写一个dao操作数据库,现在的需求是只写一个dao,这是个万能的dao,适用于所有的表,进行增删改查都可用。显然我们事先不知道要查哪个表,泛型dao的基本要求就是对所有的表都适用,这就需要我们动态的获取表名,基本思想可以是方法中传入一个类(前提是数据库中的表和实体类都是一一对应的)的实例,通过反射获取这个实体类中的属性名和属性类型,这就用到了java中反射这个特性。
反射是java中一个很重要的特性,在不知道类中信息的时候,利用反射我们可以获取到类中所有的信息,例如属性名,属性类型,方法名,还可以执行类中的方法,很强大的,在框架中大多数也是采用反射获取类中的信息。以前的知识只是知道反射可以破坏单例(因为反射可以获取到类中的所有信息,构造方法也不例外),但是现实中没有哪个程序员写完了单例模式,在用反射来破坏单例吧……
在说反射前先说一个在反射中很重要的类Class,对这个类的理解:是所有类的类(听到这句话很难理解),可能很难理解,所有的类在这个Class类前都可以看作是Class的实例,包括Object类,在Class面前的类都是他的对象。对这个理解了,那么下面的反射就可以很容易的想通了。
实例:
下面简单的介绍使用的方法,方法很简单,都是已经封装好的方法,直接调用即可
一个实体类:(贴张截图)都是私有的属性
获得属性信息的方法:
public static void getField(Object object) { //获得类 Class clazz = object.getClass(); // 获取实体类的所有属性信息,返回Field数组 Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { System.out.println(field); } }测试输出:
private int com_domain.Users.idprivate java.lang.String com_domain.Users.nameprivate java.lang.String com_domain.Users.passwordprivate int com_domain.Users.aid关于属性的信息都被获取到了,包括权限修饰符,属性类型,属性名,这里的String是java.lang.String,属性名和属性类型后面可以利用字符串截取获得实际想要的数据。
也可以直接获取到属性的类型,在Fileld类中有一个getGenericType方法:
在前面的for循环中加入下面这句话:
String type = field.getGenericType().toString();输出的是:
intclass java.lang.Stringclass java.lang.Stringint
独立获取属性名:
String name = field.getName();输出:
idnamepasswordaid
阅读全文
0 0
- 通过反射获取属性名和属性类型
- 通过反射获取匿名类型的属性和属性值
- 反射获取属性名和属性值
- 反射获取属性类型
- java反射获取类的属性名和属性值
- 通过model 得到 属性名和属性类型 放进数据库
- 反射获得属性名/属性类型
- 利用Java反射根据属性名获取对象值和类型代码
- 通过java反射获得属性名 和 值
- Object get["属性"]; java反射技术通过对象和属性名得到属性值
- 通过反射获取所有属性
- iOS反射机制,获取方法名和描述属性
- java反射(得到属性名,类型)
- java反射技术通过对象和属性名得到属性值
- 通过java反射机制来获取属性的类型,获取属性的值并给属性赋值
- 通过反射获取类的所有属性和方法
- Java通过反射获取和设置对象的属性值
- 通过反射获取超类属性和方法
- FEM modeling for tDCS
- 欢迎使用CSDN-markdown编辑器
- 即时通讯你该知道的那些事 | 内含分享课件
- Javascript学习笔记_Reduce()方法详解
- jar包混编C++
- 通过反射获取属性名和属性类型
- 英语之主谓一致
- 关于三方支付做的一个小总结,后期不断完善更新
- SSHSecureShellClient安装使用
- 清除caches文件夹下的某个子文件夹中的缓存
- 单点系统架构的可用性与性能优化
- windows server添加角色
- [NOIP模拟] 路径统计
- STL 双端队列