通过java类的反射机制获取类的属性类型
import java.lang.reflect.Field;
import java.lang.reflect.Method;
Class<?> cls=Class.forName(className);//通过类的名称反射类
//Class<?> cls = Object.getClass();
Field field = cls.getDeclaredField("name");//根据属性名称获取单个属性
if (field.getGenericType().toString().equals("int")||field.getGenericType().toString().equals("class java.lang.Integer")){
System.out.println("Integer type");
}
//下面是获取所有属性(取自网络,仅供参考)
for (Field field : fields) {// --for() begin
System.out.println(field.getGenericType());//打印该类的所有属性类型
// 如果类型是String
if (field.getGenericType().toString().equals(
"class java.lang.String")) { // 如果type是类类型,则前面包含"class ",后面跟类名
// 拿到该属性的gettet方法
Method m = (Method) object.getClass().getMethod(
"get" + getMethodName(field.getName()));
String val = (String) m.invoke(object);// 调用getter方法获取属性值
if (val != null) {
System.out.println("String type:" + val);
}
}
// 如果类型是Integer
if (field.getGenericType().toString().equals(
"class java.lang.Integer")) {
Method m = (Method) object.getClass().getMethod(
"get" + getMethodName(field.getName()));
Integer val = (Integer) m.invoke(object);
if (val != null) {
System.out.println("Integer type:" + val);
}
}
// 如果类型是Double
if (field.getGenericType().toString().equals(
"class java.lang.Double")) {
Method m = (Method) object.getClass().getMethod(
"get" + getMethodName(field.getName()));
Double val = (Double) m.invoke(object);
if (val != null) {
System.out.println("Double type:" + val);
}
}
// 如果类型是Boolean 是封装类
if (field.getGenericType().toString().equals(
"class java.lang.Boolean")) {
Method m = (Method) object.getClass().getMethod(
field.getName());
Boolean val = (Boolean) m.invoke(object);
if (val != null) {
System.out.println("Boolean type:" + val);
}
}
// 如果类型是boolean 基本数据类型不一样 这里有点说名如果定义名是 isXXX的 那就全都是isXXX的
// 反射找不到getter的具体名
if (field.getGenericType().toString().equals("boolean")) {
Method m = (Method) object.getClass().getMethod(
field.getName());
Boolean val = (Boolean) m.invoke(object);
if (val != null) {
System.out.println("boolean type:" + val);
}
}
// 如果类型是Date
if (field.getGenericType().toString().equals(
"class java.util.Date")) {
Method m = (Method) object.getClass().getMethod(
"get" + getMethodName(field.getName()));
Date val = (Date) m.invoke(object);
if (val != null) {
System.out.println("Date type:" + val);
}
}
// 如果类型是Short
if (field.getGenericType(http://www.my516.com).toString().equals(
"class java.lang.Short")) {
Method m = (Method) object.getClass().getMethod(
"get" + getMethodName(field.getName()));
Short val = (Short) m.invoke(object);
if (val != null) {
System.out.println("Short type:" + val);
}
}
// 如果还需要其他的类型请自己做扩展
}//for() --end
---------------------
相关文章
- 常用加密算法的Java实现总结(二) ——对称加密算法DES、3DES和AES
- Java通过属性名获取Object对象属性值
- Java Character 类
- 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制
- 以Java属性文件的格式创建Hibernate的配置文件和DTD特殊符号作用
- Java当中List集合根据对象某个属性进行去重
- Java解析jar包获取MainClass或属性配置
- java获取实体类的属性和值
- 【Java】+反射2+设置属性/成员变量 的值
- Java工程师必备
- java操作属性文件工具类
- Unable to open debugger port (127.0.0.1:57046): java.net.SocketException "so
- java 利用Class获取类的属性信息
- java 两种进程创建方式比较
- java反射
- 【华为OD机试真题 java、python、c++】机器人(100%通过+复盘思路)
- Java实现微信小程序加解密算法
- Java高手速成 | 使用TCP进行手机文件传输
- Java并发编程(一)线程定义、状态和属性
- Java网络编程技术1
- 如何使用Java读写系统属性?
- Java数据结构与算法 day12 图
- java 获取 属性的注释
- java中String字符串工具类整理
- java中==和equals比较