`

编写代码实现两个类之间的变量赋值

 
阅读更多
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

import org.omg.Dynamic.Parameter;

public class BaseSetParam {
	public void setParam(Object source, Object target) {

		Class t = target.getClass();
		Class s = source.getClass();
		Field f[] = s.getDeclaredFields();
		for (int i = 0; i < f.length; i++) {
			String name = f[i].getName();
			String setMethodName = "set"+name.substring(0,1).toUpperCase()+name.substring(1);
			String getMethodName = "get"+name.substring(0,1).toUpperCase()+name.substring(1);
			Field field;
			try{
				Method getMethod = s.getMethod(getMethodName, null);
				Object param = getMethod.invoke(source, null);
				
				field = t.getDeclaredField(name);
				Class fType = field.getType();
				Method setMethod = t.getMethod(setMethodName, fType);
				
				Object[] params = new Object[1];
				params[0] = param;
				setMethod.invoke(target, params);
			}catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		User user = new User();
		user.setName("aaa");
		Class c = user.getClass();
		Field f[] = c.getDeclaredFields();
		for (int i = 0; i < f.length; i++) {
			String mod = Modifier.toString(f[i].getModifiers());
			String name = f[i].getName();
			String getMethodName = "get"+name.substring(0,1).toUpperCase()+name.substring(1);
			Field field;
			try{
				field = c.getDeclaredField(name);
				Class fType = field.getType();
				Method method = c.getMethod(getMethodName, null);
				System.out.println(method.invoke(user, null));
			}catch (Exception e) {
				e.printStackTrace();
			}
//			System.out.print(mod + "  ");
//			System.out.print("属性名字是:" + f[i].getName() + "  ");
//			System.out.println(f[i].getType().getName());
		}
	}
}

 

分享到:
评论

相关推荐

    易语言置入变量赋值

    易语言也支持同时对多个变量赋值,如`x, y := 10, 20`,这将同时把10赋值给x,20赋值给y。在处理一对相关的值时,这种赋值方式非常有用。 六、条件赋值与比较运算 除了基本的赋值操作,易语言还提供了条件赋值,如`...

    数控宏程序变量赋值试题[参照].pdf

    数控宏程序变量赋值是数控编程中的一个重要概念,它涉及到一系列高级编程技巧,用于实现复杂的自动化加工任务。在数控系统中,宏程序允许用户通过变量来动态改变程序的行为,提高程序的灵活性和重用性。 1. 变量...

    python实现同时给多个变量赋值的方法

    例如,如果你需要交换两个变量的值,传统的编程语言可能需要一个临时变量,但在Python中,你可以直接使用解包来实现: ```python a, b = b, a ``` 这行代码会将`b`的值赋给`a`,然后将之前`a`的值赋给`b`,达到交换...

    通过yaml为json中的某个变量赋值

    在IT行业中,数据序列化和反序列化是常见的任务,其中JSON(JavaScript Object Notation)和YAML(YAML Ain't Markup Language)是两种广泛使用的格式。本篇将深入探讨如何利用YAML作为中介,来修改JSON文件中的特定...

    Java多态和实现接口的类的对象赋值给接口引用的方法(推荐)

    当我们创建一个接口类型的引用并将其赋值给实现该接口的类的对象时,这个引用变量可以调用接口中定义的所有方法。在运行时,实际调用的是哪个实现类的方法,取决于引用变量实际指向的对象。 以下是一个简单的例子:...

    Python语法:变量与赋值.rar

    这种特性在交换两个变量的值时尤为便捷。 4. 常量: Python没有内置的常量类型,但可以通过全大写变量名来表示常量,例如: ```python PI = 3.14159 ``` 虽然这不是语法上的强制,但是一种约定俗成的编码规范。 5....

    【Python入门学习】详谈python变量和变量赋值语句

    因此,如果你有两个变量都指向同一个对象,改变其中一个变量的值会影响到另一个,除非它们指向的是不可变对象(如整数、浮点数或字符串)。 在Python中,有多种赋值方式可供选择。传统的赋值方式如`a = 1`是最常见...

    用C#语言实现两个数的交换

    对于多线程环境,可以使用`Interlocked`类的`Exchange`方法来原子地交换两个变量的值,确保在并发情况下不会出现数据不一致的问题: ```csharp int a = 5; int b = 10; Interlocked.Exchange(ref a, b); ``...

    Python3单行定义多个变量或赋值方法

    这样的语法不仅用于简单值的赋值,还可以用于交换两个变量的值,如: ```python a, b = b, a ``` 这里,`b, a`创建了一个新的元组,然后通过赋值,`a`和`b`的值被互换。这是因为元组拆封会根据变量的数量匹配元组...

    wincc7.4实现变量递增和递减

    例如,可以创建两个按钮,分别绑定到`IncrementVariable`和`DecrementVariable`函数,当用户点击按钮时,变量就会相应地增加或减少。 5. 集成到实际系统: 在工控环境中,这样的递增和递减操作可能与硬件设备如PLC...

    python语法特征包括多变量赋值、变量交换等

    在Python中,可以一次性为多个变量赋值,这种方式非常直观且高效。 ```python x, y, z = 10, 15, 20 print(y) # 输出: 15 ``` 此外,还可以为多个变量赋予同一个值: ```python x = y = z = 20 print(y) # 输出: 20 ...

    Python之关于类变量的两种赋值区别详解

    本文将深入探讨Python类变量的两种赋值方式及其区别,并通过示例代码进行详细解释。 首先,让我们看一个简单的例子: ```python class Person(object): TAG = "hello" p1 = Person() p2 = Person() print(p1....

    sqlserver存储过程中SELECT 与 SET 对变量赋值的区别

    `SET`语句一次只能为一个变量赋值,而且如果表达式不返回任何值,变量将保持其原始值。这意味着,如果尝试用`SET`给变量赋一个返回多个值的表达式,如子查询,系统将会抛出错误。 例如: ```sql DECLARE @addr ...

    02交换两个变量的值

    本篇文章将深入探讨在编程语言中如何实现两个变量值的交换,并通过具体的示例代码进行详细讲解。主要涉及的知识点包括变量声明、赋值操作以及使用第三个辅助变量进行值交换的方法。 #### 变量声明与初始化 在任何...

    用汇编程序实现两个32位数相加

    这里定义了两个32位的变量`x`和`y`,分别被赋值为`0fff99865h`和`56437895h`。 - **堆栈段(SSEG)**:用来存放运行时的堆栈。例如: ```assembly SSEG SEGMENT STACK 'STACK' db 256 DUP(0) SSEG ENDS ``` ...

    point类程序

    在编程领域,`Point` 类通常用于表示二维坐标系统中的一个点,具有 x 和 y 两个坐标轴的值。在给定的“point类程序”中,我们可以推测它包含了一个名为 `Point` 的自定义类,该类设计了用于存储和操作点坐标的相关...

    类的继承与多态性

    复制构造函数用于创建类对象的副本,而赋值运算符处理对象之间的赋值。这两个特殊成员函数需要处理深拷贝问题,避免浅拷贝导致的数据共享和意外修改。 例如,派生类的复制构造函数可能如下所示: ```cpp class ...

    交换两个变量的值,不使用第三个变量的方法及实现.pdf

    在编程中,交换两个变量的值是一个常见的操作。标准方法是使用一个临时变量来辅助交换,但有时我们可能希望避免使用额外的存储空间。本文主要介绍了四种不使用第三个变量来交换两个变量值的方法,适用于C/C++编程...

    android面试题:Java基础(变量赋值陷阱).docx

    对于Java,如果要交换两个变量的值,最安全、最清晰的方法是使用临时变量: ```java int tmp = x; x = y; y = tmp; ``` 总的来说,编写简洁、可读性强的代码对于长期维护和团队协作至关重要,而避免使用可能导致...

    编写一个抽象类Shape

    `Rectangle`类具有两个私有成员变量,即宽度`width`和高度`height`,以及相应的getter和setter方法。`Rectangle`类覆盖了`Shape`类中的`getArea()`和`getPerimeter()`方法,分别计算矩形的面积(宽度乘以高度)和...

Global site tag (gtag.js) - Google Analytics