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时,设置默认值的更多相关文章

  1. 其他函数:值为NULL时的默认值NVL,DECODE

    NVL(列,默认数字值),此函数返回值为数值型,非NULL时返回原始值,NULL时返回默认数字值. DECODE:

  2. select2 插件编辑时设置默认值

    function htDate(selectCustomerId, val) { var customerId = selectCustomerId; var values = val; ajaxJs ...

  3. .NET DateTime类型变量作为参数时设置默认值

    一个小的 Tips. .NET 中函数参数的默认值需要是编译时常量.如果参数是引用类型,可以设置Null,如果是值类型,可以设置相应的编译时常量,如整型可以用整数,但对于DateTime(结构体,值类 ...

  4. 001. 为input type=text 时设置默认值

    1. 前端HTML代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Defa ...

  5. spring 配置文件属性设置默认值以及读取环境变量值

    在 Spring 中为 javabean 注入属性文件中的属性值一般人都知道的,可以通过 org.springframework.beans.factory.config.PropertyPlaceh ...

  6. java获取获得Timestamp类型的当前系统时间。以及java.util.date 、java.sql.Date之间的转换

    java获取取得Timestamp类型的当前系统时间java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new T ...

  7. java获取获得Timestamp类型的当前系统时间

    java获取取得Timestamp类型的当前系统时间java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new T ...

  8. java获取获得Timestamp类型的当前系统时间。

    java获取获得Timestamp类型的当前系统时间.   java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = n ...

  9. 如何为一个类型为Color的属性设置默认值

    最近在研究GDI+的时候,用winform来写自定义控件遇到需要为控件的属性设置默认值,但这个属性的类型是System.Drawing.Color.本文只是总结一下各种设置的方法. Example [ ...

随机推荐

  1. 1334: [Baltic2008]Elect

    Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党 ...

  2. php Memcache/Memcached操作手册

    php Memcache/Memcached使用教程 Memcache和Memcached 其实是一个东西,只是php中要是用的扩展不一样, 2009年左右有人丰富memcache的用法和性能,编写了 ...

  3. Linux开启关闭redis

    1.启动:redis-server(redis-server redis.conf) 2.登陆:redis-cli(redis-cli -p 6379) 3.关闭:redis-cli shutdown

  4. js的变量使用<bean><list:write>赋值时需加' '

    script的变量使用<bean><list:write>赋值时需加' ',如:var code ='<bean:write name="target" ...

  5. SQL Server锁分区特性引发死锁解析

    锁分区技术使得SQL Server可以更好地应对并发情形,但也有可能带来负面影响,这里通过实例为大家介绍,分析由于锁分区造成的死锁情形. 前段时间园友@JentleWang在我的博客锁分区提升并发,以 ...

  6. 【基础知识】.Net基础加强07 天

    一. 自定义泛型 1. 泛型的目的:提高代码的复用性. 2. T:一般叫做“类型参数”,把数据类型作为参数传递 .一般用T类表示或者以大写T开头的比如:TKey,TValue.TOutput.TRes ...

  7. 使用NHibernate(9)-- 缓存

    1,对象状态. 作为基础,还是先看一下对象的状态吧.主要涉及到三个名词,瞬时.持久.托管. 瞬时态:对象刚创建,Session还不知道这个对象的存在.可以通过调用ISession的Save等方法可以转 ...

  8. 用c#开发微信 (21) 微信酒店预订系统

    本系统主要是帮助酒店让客户可以通过微信预订房间,增加酒店的入住率. 1 微信里订酒店 1.1关注微信号 用微信扫描下面的二维码(微信号 webuscn),关注此微信号 1.2订房 点击微信号里的 微布 ...

  9. 无环的visitor模式

    无环的访问者模式,是来改进原有访问者模式的不足之处的,是Robert C. Martin首次提出的.我们知道访问者模式的优点是为被访问继承体系动态添加行为,而无须改变继承体系.但是GOF访问者模式的缺 ...

  10. Fragment之间的通信

    在本节中,你会学到 1.定义接口 2.实现接口 3.将消息传递给fragment 为了重用Fragment UI 组件,在设计中你应该通过定义每一个fragemnt自己的layout和行为,让frag ...