package test;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author 0414
*
*/
public class TestReflectChecker {
public class Param {
private String id;
private String name;
private String year;
private String month;
private String day;
public Param() {}
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getMonth() {
return month;
}
public void setMonth(String month) {
this.month = month;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
}
/**
* CHECK_FIELD
*/
private enum CHECK_FIELD {
id,
name,
year,
month,
day
}
private static Map<String, CHECK_FIELD[]> matchMap = new HashMap<String, CHECK_FIELD[]>();
static {
//id 1 : name is not null;
matchMap.put("1",
new CHECK_FIELD[] { CHECK_FIELD.id, CHECK_FIELD.name });
//id 2 : year, month, day is not null;
matchMap.put("2", new CHECK_FIELD[] { CHECK_FIELD.id, CHECK_FIELD.year,
CHECK_FIELD.month, CHECK_FIELD.day });
}
private TestReflectChecker() {
}
/**
* パラメータをチェック
*
* @param param
* @return
*/
public static boolean check(Param param) {
if (param == null) {
return false;
}
String id = param.getId();
CHECK_FIELD[] checkFields = matchMap.get(id);
if (checkFields == null) {
return false;
}
for (CHECK_FIELD field : checkFields) {
Method getFieldMethod = getGetMehtodByField(Param.class, field
.toString());
try {
Object value = getFieldMethod.invoke(param, new Object[] {});
if (value == null) {
System.out.println(field + " is null, false will be return .");
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
return true;
}
/**
* fieldからmethodを取得
*
* @param clazz
* @param field
* @return
*/
private static Method getGetMehtodByField(Class clazz, String field) {
Method method = null;
String methodName = "get" + field.substring(0, 1).toUpperCase()
+ field.substring(1);
try {
method = clazz.getMethod(methodName, new Class[] {});
} catch (Exception e) {
e.printStackTrace();
}
return method;
}
public static void main(String[] args) {
Param param = new TestReflectChecker().new Param();
param.setId("1");
param.setName("name");
System.out.println(TestReflectChecker.check(param));
param.setId("2");
param.setYear("2011");
System.out.println(TestReflectChecker.check(param));
}
}
分享到:
相关推荐
反射给指定字段赋值
一个Java反射工具类,可以完成查询字段值以及设置字段值的功能。
简单demo,导入即可运行。
springboot 处理返回结果中字段为空或为null,不展示字段的问题(字段展示不全),给为空字段初始化值,如:字符串null转换为"
1、在Java开发中,常常需要将数据库表列字段换成Java实体类字段。但是手动实现这个转换过程比较慢,且容易出错,影响开发效率。为了解决这个问题,开发了这个Java实体类字段生成工具类。 2、该工具类可以将数据库表...
java 通过反射获取类上注解,方法上注解,注解里的值及方法参数,项目为maven项目。导入时记得选择maven项目
java处理返回对象中字段为null的情况,返回为字符串
java如何获得数据库表中各字段的字段名
Delphi查询指定字段为空的数据..rar
通过反射获得实体类的字段和值
java读取sqlserver image字段.docx
java集合某个字段按照中文拼音排序 java集合某个字段按照中文拼音排序
java实体类字段自定义-数据库字段和程序实体类属性不一致解决方案.docx
java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类
利用java反射技术实现动态搜索所有字段
3.3 获取所有的成员变量(不考虑修饰符) 3.4 获取私有的变量(利用暴力反射) 4. 反射获取构造方法 4.1有参构造 4.2无参构造 4.3无参构造简便写法 5.反射获取成员方法 5.1无参方法 5.2 有参方法 5.3 获取...
kettle通过java代码将数据库blob 字段抽取到本地文件
该篇文章主要介绍当我们碰到参数或者返回值是一个对象时,如何通过frida反射调用该对象的方法(methods)与获取该对象的字段(fields)。感兴趣的朋友可以下载下来看看,了解了解
主要介绍了利用Java反射机制实现对象相同字段的复制操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
java 干货,对接口参数进行中的特殊字符,如insert select * % 等进行判断,进行过滤.