1、配置类

package com.da.tool.util.configuration.reflect;

/**
*/
public class JobInfo { private String jobName; private String jobId; public String getJobName() {
return jobName;
} public void setJobName(String jobName) {
this.jobName = jobName;
} public String getJobId() {
return jobId;
} public void setJobId(String jobId) {
this.jobId = jobId;
}
} package com.da.tool.util.configuration.reflect; /**
*/
public class TimedJob extends JobInfo { private String startTime; private String stopTime; public String getStartTime() {
return startTime;
} public void setStartTime(String startTime) {
this.startTime = startTime;
} public String getStopTime() {
return stopTime;
} public void setStopTime(String stopTime) {
this.stopTime = stopTime;
}
}

2、反射类

package com.da.tool.util.configuration.reflect;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;
import java.util.Properties;
import java.util.Set; /**
*/
public class Reflect { public static void main(String[] args) { Properties prop = new Properties();
prop.setProperty("jobName", "timingJob");
prop.setProperty("jobId", "");
prop.setProperty("startTime", String.valueOf(new Date().getTime()));
prop.setProperty("stopTime", String.valueOf(new Date().getTime() + * * * )); JobInfo jobInfo = (JobInfo) setTarget(prop,new TimedJob()); TimedJob timedJob=(TimedJob) jobInfo; System.out.println("jobName = " + timedJob.getJobName());
System.out.println("jobId = " + timedJob.getJobId());
System.out.println("startTime = " + timedJob.getStartTime());
System.out.println("stopTime = " + timedJob.getStopTime()); } /**
* 给实例instance的属性赋值
*
* @param prop
* @param instance
* @return
*/
public static Object setTarget(Properties prop, Object instance) { Set<Object> keys = prop.keySet(); for (Object key : keys) { String name = String.valueOf(key); String value = prop.getProperty(String.valueOf(key)); try {
Method method=instance.getClass().getMethod("set" + upperFirstChar(name), String.class);
method.invoke(instance,value);
} catch (NoSuchMethodException e) {
//set方法不存在
e.printStackTrace();
} catch (InvocationTargetException e) {
//
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}}
return instance;
} /**
* 将字符串的首字母大写
*
* @param string
* @return
*/
public static String upperFirstChar(String string) {
return string.substring(, ).toUpperCase() + string.substring();
}
}
jobName = timingJob
jobId =
startTime =
stopTime =

2、对象赋值(clone)

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<surefire.redirectTestOutputToFile>true</surefire.redirectTestOutputToFile>
<groovy.version>2.1.6</groovy.version>
<slf4j.version>1.7.5</slf4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovy.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
package com.da.tool.util.configuration.reflect;

/**
*/
public class JobInfo implements Cloneable{ private String jobName; private String jobId; public String getJobName() {
return jobName;
} public void setJobName(String jobName) {
this.jobName = jobName;
} public String getJobId() {
return jobId;
} public void setJobId(String jobId) {
this.jobId = jobId;
} @Override
public Object clone() {
JobInfo ic = null;
try{
ic = (JobInfo)super.clone();
}catch(CloneNotSupportedException e) {
e.printStackTrace();
}
return ic;
}
}

测试类

package com.da.tool.util.configuration.clone;

import com.da.tool.util.configuration.reflect.TimedJob;
import org.apache.commons.lang.ObjectUtils; /**
*/
public class CloneInstance { public static void main(String[] args) { TimedJob timedJob=new TimedJob();
timedJob.setJobName("jobname");
timedJob.setJobId("");
timedJob.setStartTime("");
timedJob.setStopTime(""); TimedJob cloneTimedJob1= (TimedJob)ObjectUtils.clone(timedJob);
TimedJob cloneTimedJob2= (TimedJob)ObjectUtils.clone(timedJob); System.out.println("jobName = " + cloneTimedJob1.getJobName());
System.out.println("jobId = " + cloneTimedJob1.getJobId());
System.out.println("startTime = " + cloneTimedJob1.getStartTime());
System.out.println("stopTime = " + cloneTimedJob1.getStopTime()); System.out.println("jobName = " + cloneTimedJob1.getJobName());
System.out.println("jobId = " + cloneTimedJob1.getJobId());
System.out.println("startTime = " + cloneTimedJob1.getStartTime());
System.out.println("stopTime = " + cloneTimedJob1.getStopTime()); }
}

测试输出

jobName = jobname
jobId = 1
startTime = 123
stopTime = 789
jobName = jobname
jobId = 1
startTime = 123
stopTime = 789

31 反射方式给类的属性赋值 和 对象赋值(clone)的更多相关文章

  1. java中三种方式获得类的字节码文件对象

    package get_class_method; public class ReflectDemo { /** * @param args */ public static void main(St ...

  2. java-通过反射获取目标类的属性,方法,构造器

    首先定义一个urse package com.studay_fanshe; public class User { private String uname; private int age; pri ...

  3. 反射,获取类的属性以及get方法

    vo实体类: public class Result { /*** * 返回结果code * ok:10000 * error:20000 */ private String code; /*** * ...

  4. 反射 实现不同模型相同属性赋值 第二集(automapper)

    前言: 两年前写过一个 反射实现不同模型相同属性赋值 只能简单的实现两个model 相同属性名,相同类型赋值 最近又遇到这个问题,需要对相同属性名或者指定属性名 不同类型(复杂对象,如:List< ...

  5. c#自定义ORM框架---(泛型&反射&实体类扩展属性<附带通用增、删、查、改>)

    该教材主要是运用到泛型.反射和实体类扩展属性 步骤一.建立扩展属性类 实体类扩展属性要继承Attribute基类完成 [AttributeUsage(AttributeTargets.Property ...

  6. 【转】EF 获取类的属性并排除特定属性(getType().GetProperties())

    当获取一个类型(class)的所有属性时,想排除指定属性,该如何操作? 比如:EF中一个实体类型UserEntity,通过反射获取这个类的属性时,想排除这个为映射的字段ID 使用以下方法即可! Pro ...

  7. 获取类的属性并排除特定属性(getType().GetProperties())

    当获取一个类型(class)的所有属性时,想排除指定属性,该如何操作? 比如:EF中一个实体类型UserEntity,通过反射获取这个类的属性时,想排除这个为映射的字段ID 使用以下方法即可! Pro ...

  8. 反射-优化及程序集等(用委托的方式调用需要反射调用的方法(或者属性、字段),而不去使用Invoke方法)

    反射-优化及程序集等(用委托的方式调用需要反射调用的方法(或者属性.字段),而不去使用Invoke方法)   创建Delegate (1).Delegate.CreateDelegate(Type, ...

  9. iOS开发之遍历Model类的属性并完善使用Runtime给Model类赋值

    在上篇博客<iOS开发之使用Runtime给Model类赋值>中介绍了如何使用运行时在实体类的基类中添加给实体类的属性赋值的方法,这个方法的前提是字典的Key必须和实体类的Property ...

随机推荐

  1. swift中的可选类型

    可选类型也是Swift语言新添加的对象.主要是为了解决对象变量或常量为空的情况.在前面定义的变量和常量都不能为空.里面必须要有值. Swift中的可选类型则允许变量(常量)中没有值(被设为nil).要 ...

  2. LeetCode 组合总和(dfs)

    题目 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的数字可以无限制重 ...

  3. 树莓派安装ubuntu_meta并配置开发环境

    1.烧录系统 首先准备好我们要烧录的ubuntu_meta系统,可以在树莓派官网中下载https://www.raspberrypi.org/downloads/ 这里我们选择 Raspberry P ...

  4. vue项目打包后运行报错400如何解决

    昨天一个Vue项目打包后,今天测试,发现无论localhost还是服务器上都运行不了,报错如下: Failed to load resource: the server responded with ...

  5. git warning: CRLF will be replaced by LF in resources/views/sessions/create.blade.php

    git config core.autocrlf false

  6. CodeForces-220B Little Elephant and Array

    小象喜欢玩数组.他有一个数组a,由n个正整数组成,从1到n进行索引.让我们用索引i表示数字ai. 此外,小象对数组还有m个查询,每个查询的特征是一对整数lj和rj(1 ≤ lj ≤ rj ≤ n).对 ...

  7. border-1px的实现(stylus)如何在移动端设置1px的border

    在这里我只介绍下边框的实现: 当样式像素一定时,因手机有320px,640px等.各自的缩放比差异,所以设备显示像素就会有1Npx,2Npx.为保设计稿还原度,解决就是用media + scale. ...

  8. map或者对象转换

    map或者对象转换为具有相同字段的对象 List<Example> errorCodeExcelBeanList = JSONObject.parseArray(((JSONObject) ...

  9. WLC HA (for AP)?

    在WLC的配置上,如果有AP注册到WLC,我们实际上可以看到两部分配置: part I part II 问题来了,那么这两部分是什么关系呢?是不是一样的呢? 从目前的了解来看,我的认知是这两个配置都是 ...

  10. oracle误操作表数据--回退(闪回)被提交后的数据

    // 查询该时间段 这个表的状态 (就是表状态正常的时刻 下面的时间仅用于举例) select * from 表名 as of timestamp to_timestamp('2019-09-26 1 ...