java 反射: 当Timestamp类型的属性值为null时,设置默认值
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.Timestamp; class Person {
private String name;
private int age; private Timestamp birth; public Timestamp getBirth() {
return birth;
} public void setBirth(Timestamp birth) {
this.birth = birth;
} public String getName() {
return this.name;
} public void setName(String name) {
this.name = name;
} public void setAge(int age) {
this.age = age;
} public int getAge() {
return this.age;
}
} /*****************************************************/
public class InvokeSetterMethod {
public static void main(String[] args) {
Person p = new Person();
invokeSetterMethodByType(p, Person.class, "java.sql.Timestamp",
Timestamp.valueOf("1111-11-11 11:11:11"), Timestamp.class);
p.setBirth(Timestamp.valueOf("2014-12-11 00:00:00"));
System.out.println(p.getBirth());
} /**
* 调用setter方法
*
* @param obj
* @param att
* @param value
* @param type
*/
public static void invokeSetterMethodByType(Object obj, Class cl,
String methodType, Timestamp param, Class<?> paramType) {
try { Field[] f = cl.getDeclaredFields();
for (Field field : f) {
// 属性类型
String type = field.getType().getName();
// 属性名
String name = field.getName();
// 属性值
PropertyDescriptor pd = new PropertyDescriptor(field.getName(),
cl);
Method getMethod = pd.getReadMethod();
Object o = getMethod.invoke(obj);
// 当Timestamp类型的属性值为null时,设置默认值
if (methodType.equals(type) && null == o) {
setter(obj, name, param, paramType);
}
} } catch (Exception e) {
e.printStackTrace();
}
} /**
* 调用setter方法
*
* @param obj
* @param att
* @param value
* @param type
*/
public static void setter(Object obj, String att, Object value,
Class<?> type) {
try {
Method met = obj.getClass().getMethod("set" + initStr(att), type);
met.invoke(obj, value);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 调用getter方法
*
* @param obj
* @param att
*/
public static void getter(Object obj, String att) {
try {
Method met = obj.getClass().getMethod("get" + initStr(att));
System.out.println(met.invoke(obj));
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 将单词的首字母大写
*
* @param old
* @return
*/
public static String initStr(String old) {
String str = old.substring(0, 1).toUpperCase() + old.substring(1);
return str;
}
}
java 反射: 当Timestamp类型的属性值为null时,设置默认值的更多相关文章
- 其他函数:值为NULL时的默认值NVL,DECODE
NVL(列,默认数字值),此函数返回值为数值型,非NULL时返回原始值,NULL时返回默认数字值. DECODE:
- select2 插件编辑时设置默认值
function htDate(selectCustomerId, val) { var customerId = selectCustomerId; var values = val; ajaxJs ...
- .NET DateTime类型变量作为参数时设置默认值
一个小的 Tips. .NET 中函数参数的默认值需要是编译时常量.如果参数是引用类型,可以设置Null,如果是值类型,可以设置相应的编译时常量,如整型可以用整数,但对于DateTime(结构体,值类 ...
- 001. 为input type=text 时设置默认值
1. 前端HTML代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Defa ...
- spring 配置文件属性设置默认值以及读取环境变量值
在 Spring 中为 javabean 注入属性文件中的属性值一般人都知道的,可以通过 org.springframework.beans.factory.config.PropertyPlaceh ...
- java获取获得Timestamp类型的当前系统时间。以及java.util.date 、java.sql.Date之间的转换
java获取取得Timestamp类型的当前系统时间java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new T ...
- java获取获得Timestamp类型的当前系统时间
java获取取得Timestamp类型的当前系统时间java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new T ...
- java获取获得Timestamp类型的当前系统时间。
java获取获得Timestamp类型的当前系统时间. java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = n ...
- 如何为一个类型为Color的属性设置默认值
最近在研究GDI+的时候,用winform来写自定义控件遇到需要为控件的属性设置默认值,但这个属性的类型是System.Drawing.Color.本文只是总结一下各种设置的方法. Example [ ...
随机推荐
- hdu 4107
Gangster Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- jquery_easyui 相关问题
1. datagrid点击title,无法进行客户端排序. 增加属性 data-options="singleSelect:true,collapsible:true,url:'/ViewS ...
- 【Python自动化运维之路Day6】
1.递归思考题,阶乘 使用递归方式(函数)计算: 1*2*3*4*5*6*7*8*9*10的值 def func(num): if num==1: return 1 return num*func(n ...
- starUML使用教程
starUML使用教程 下载与安装 先从官网下载软件,这个版本是收费的,但可以先进行试用.也可以使用免费版,基本UML依然齐全,但用起来感觉没有收费版好用. 下载之后按照安装说明,一步步安装就可以了. ...
- NABC模型进行需求分析
N(需求): 图书租售管理系统.图书租售管理系统必须包含有完善的图书出租功能.还租.预订(租).会员管理.积分管理.简单的财务系统.详细分类统计.各数据排行榜.详细权限管理. A(做法): 因为有一些 ...
- C#笔试题(一)
一.下面是一个由*号组成的4行倒三角形图案. 要求: 1.输入倒三角形的行数,行数的取值3-21之间,对于非法的行数,要求抛出提示"非法行数!": 2.在屏幕上打印这个指定了行数的 ...
- 实验三 组合逻辑电路的VHDL设计
一.实验目的 熟悉QuartusⅡ的VHDL文本设计过程,学习简单组合逻辑电路的设计.仿真和测试方法. 二.实验内容 1. 基本命题 完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测 ...
- NBIbatis 基础框架
基础框架 NBIbatis 为真实在用的系统中剥离出的一个ibatis.net应用框架,目的在于通过此项目让软件工程师集中关注表现层及业务规则编写. 通过数据访问和业务规则可快速搭建不同表现形式的网站 ...
- 安卓-PC-Arduino3方通信实现
请仔细理解相关参数,如端口设置.IP设置.COM口设置......等等.....不要盲目COPY.....这涉及手机.电脑和一个单片机,其中一台电脑作为服务器并与单片机相连,负责通过网络与客户端通信( ...
- ciancd开源
github 开源项目:ciandcd : https://github.com/ciandcdjenkins:https://github.com/ciandcd/jenkins-awesomec ...