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. 编写基于jQuery的插件的方法

    注意:jQuery中有一个extend的方法,这个方法是添加js对象字段的,下面会多次用到 1:添加全局类的方法 常用的ajax就是该类插件,下面要编写一个简单的加法和减法的基于jQuery的方法 $ ...

  2. DevExpress组件之——PopupMenu组件(转)

    出处:http://www.cnblogs.com/xlx0210/archive/2010/07/14/1777366.html 目录在项目中使用了第三方控件DevExpress,得开始研究其他控件 ...

  3. 让linux中的程序崩溃时生成core文件

    当我们的linux程序崩溃的时候,常常会有这样的提示:    Segmentation fault (core dumped)    段错误 (核心已转储)    提示说生成了core文件,但是此功能 ...

  4. nodejs: 理解Buffer

    学习nodejs中buffer这一章,有一段写到buffer的拼接,其中一段源码非常优美,特拿来与大家共享. var chunks = []; var size = 0; res.on('data', ...

  5. CALayer图层的基本介绍

    掌握 ● CALayer的基本属性 ● CALayer和UIView的关系 ● position和anchorPoint的作⽤用 CALayer ● 在iOS中,你能看得见摸得着的东西基本上都是UIV ...

  6. Ubuntu下制作ISO文件

    利用Ubuntu自带的命令mkisofs就可以制作iso文件,具体方法如下: 1.   如果你是直接从cd压制iso文件的,执行 sudo umount /dev/cdromdd if=/dev/cd ...

  7. C# async await 学习笔记1

    由于我的开发工具为vs.net 2010(.net 4.0),需先做以下两步才能进行: 1.下载并安装Async CTP (http://www.microsoft.com/en-us/downloa ...

  8. 基于ticket的rw锁

    代码: wiredtiger-2.8.0/src/os_posix/os_mtx_rw.c rw锁结构 struct { uint16_t writers; // Now serving for wr ...

  9. JS检测浏览器是否支持HTML5视频播放 (标签<video>) ,

    function checkVideo() { if (!!document.createElement('video').canPlayType) { var vidTest = document. ...

  10. 【Python之路Day12】网络篇之Python操作MySQL

    pymysql是Python中操作MySQL的模块,使用方法和MySQLDB几乎一样. 1. 执行SQL语句 #!/usr/bin/env python3 # -*- coding: utf-8 -* ...