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 [ ...
随机推荐
- homework 11 2016 5 13 读入文件做输入
#include <iostream>#include <fstream> using namespace std; int main(){ string x, y, z; c ...
- Android自动化测试之MonkeyRunner
1.Monkeyrunner简介 Monkeyrunner是Android系统自带的四大自动化测试工具之一,其他三个是Monkey.CTS.Benchmark:Monkeyrunner需要通过Andr ...
- 【状压dp】【bitset】bzoj1688 [Usaco2005 Open]Disease Manangement 疾病管理
vs(i)表示患i这种疾病的牛的集合. f(S)表示S集合的病被多少头牛患了. 枚举不在S中的疾病i,把除了i和S之外的所有病的牛集合记作St. f(S|i)=max{f(S)+((St|vs(i)) ...
- tomee 系列问题
1. remote client 无法建立连接 修改system.properties # allowed packages to be deserialized, by security we de ...
- Dividing a Chocolate(zoj 2705)
Dividing a Chocolate zoj 2705 递推,找规律的题目: 具体思路见:http://blog.csdn.net/u010770930/article/details/97693 ...
- HDFS用户指南
https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html hdfs的一些特征: 1.hadoop 包含hdfs 很适合分布式存储以及分布式处 ...
- python time
Python-time 计算程序运行时间 import time start = time.clock() time.sleep(5) end = time.clock() runtime = end ...
- 常用dom对象
DOM:文档对象模型 --树模型 文档:标签文档,对象:文档中每个元素对象,模型:抽象化的东西 一:window: window.shuxing; 属性(值或者子对象): opener:打开当前窗口的 ...
- Emmet语法预览
Emmet 是一个能提高前端开发效率的编辑器插件,支持 Sublime,Atom,TextMate,Nodepad++ 等主流编辑器.Emmet 定义了一些缩写,当我们输入缩写代码后,按展开键(默认是 ...
- paip.提升效率---request自动绑定domain object
paip.提升效率---request自动绑定domain object #.keyword,subtitle关键字,子标题 ------------------------- 复制request属性 ...