美文网首页
java两个对象之间传值,简单的封装

java两个对象之间传值,简单的封装

作者: 子龙神 | 来源:发表于2018-05-23 16:17 被阅读0次

使用SSH框架的过程中,经常涉及到修改,我们只要对部门的部门属性进行修改我们通常的做法是先从数据库把对象查询出来target,

再把从页面上传递来的修改过的值封装成为一个对象model,我们需要把model中修改过的属性重新赋值给target,再对target进行保存.完成修改.

在这个target.setXxx(model.getXxx)过程中有可能有大量的苦力工作要做,所以我利用反射做了一个简单的封装,只需要传递两个对象,就可以完成重新赋值的过程.

package cn.service.impl;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

/**

* @Description:

* 通过两个对象的传入,进行两个对象的赋值,

* 共2个参数,把第一个对象中的参数传递给第二个对象

* @author: 长河

* @version:    0.0.2beta

* @Company:

* @date:       2017年3月26日

*/

public class Demo {

//model是从前台接受的数据,封装的对象

//target是从后台根据id查询到的数据,封装的对象

public static void setValue(T model,T target) throws Exception {

//获得实体类

Class clazz = model.getClass();

//查看有那些字段

Field[] fields = clazz.getDeclaredFields();

//遍历

for (Field field : fields) {

//属性的名字

String fieldName = field.getName();

//属性的类型

//Class type = field.getType();

//再得到getter方法的名字

String getMethodName = "get" + (fieldName.charAt(0)+"").toUpperCase() + fieldName.substring(1);

Method getMethod = clazz.getMethod(getMethodName);

//判断model的哪个属性是否为空,利用get方法

Object object = getMethod.invoke(model);

if(object!=null) {

//不为空就进行赋值

// 通过属性名,来获取对应的setXXX的名字

String setMethodName = "set" + (fieldName.charAt(0)+"").toUpperCase() + fieldName.substring(1);

//这是set方法

Method setMethod = clazz.getMethod(setMethodName, field.getType());

//这里需要进行类型的强制转换吗?

setMethod.invoke(target, object);

}

}

}

}

其实我觉得应该是field.getType,得到参数的类型,根据类型控制对象中值的赋予,而不是简单的使用Object进行赋值.不过经过简单的测试,这个类可以使用,没什么大问题.

这是个简单的封装还有其他的需要的条件可以考虑,可以把这个类封装的更好

https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-18045781879.2.33c5236bZlPDUM&id=569353717228

深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理)   很不错的虚拟机视频教程.

相关文章

  • java两个对象之间传值,简单的封装

    使用SSH框架的过程中,经常涉及到修改,我们只要对部门的部门属性进行修改我们通常的做法是先从数据库把对象查询出来t...

  • iOS-对象间的传值

    iOS - 对象间传值 传值方式 个人把他们分为官方和非官方,可以看出官方版的传值方式均为两个对象之间通过系统特定...

  • java调用方法传递机制

    java是传值,不是传引用,有人说有的人说:基础类型传值,对象类型传引用。其实对象类也是传值,只不过对象的值恰好是...

  • iOS • 记——代理传值和Block传值的简单对比

    在iOS开发中,两个界面之间的传值是开发中经常会用到,给需要传值的对象,直接定义属性就能传值。传值分为两种,顺传和...

  • swift传值

    本文将介绍swift中的传值方式:属性传值、代理传值、闭包传值、通知传值本文将在两个VC之间进行传值:HomeVC...

  • 第二部分:java类与对象

    关于Java对象作为参数传递是传值还是传引用的问题 Java中@Override的作用 Java 访问权限修饰符p...

  • java的String值传递还是引用传递

    java值传递还是引用传递 一般可以这样认为基础类型是值传递,而对象封装是引用传递 对于test。传入对象,以后都...

  • 猿学-java学习中java传值最容易忽略一点小细节

    java学习 关于java传值的一点小细节:java语言中对象传递地址,而不是引用。 例如:假设对象Test有na...

  • iOS开发-通知的基本使用

    通知传值 界面之间的传值有很多方法,最基本的是可以实例化对象进行传值,也可以使用block块或者是使用通知进行传值...

  • 小程序 传值 页面之间传对象 含有特殊符号

    小程序页面之间传值,有时候需要传递整个对象。 如果对象中没有特殊符号,则直接使用: 传值的页面, 取值的页面, 当...

网友评论

      本文标题:java两个对象之间传值,简单的封装

      本文链接:https://www.haomeiwen.com/subject/tfnrjftx.html