代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
反射检测参数的某个字段不能为空
作者:
/ 发布于
2017/1/18
/
482
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)); } }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3