package com.unit; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ReflectTester { /** * 在这个类里面存在有copy()方法,根据指定的方法的参数去 构造一个新的对象的拷贝 * 并将他返回 * @throws NoSuchMethodException * @throws InvocationTargetException * @throws IllegalAccessException * @throws InstantiationException * @throws SecurityException * @throws IllegalArgumentException */ @SuppressWarnings({ "rawtypes", "unchecked" }) public Object copy(Object obj) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException{ //获得对象的类型 Class classType=obj.getClass(); System.out.println("该对象的类型是:"+classType.toString()); //通过默认构造方法去创建一个新的对象,getConstructor的视其参数决定调用哪个构造方法 Object objectCopy=classType.getConstructor(new Class[]{}).newInstance(new Object[]{}); //获得对象的所有属性 //[private java.lang.Long com.unit.Customer.id, private java.lang.String com.unit.Customer.name, private int com.unit.Customer.age] Field[] fields=classType.getDeclaredFields(); for(int i=0 ; i < fields.length ; i++){ Field field = fields[i]; String fieldName = field.getName(); String stringLetter = fieldName.substring(0,1).toUpperCase(); //获得相应属性的getXXX和setXXX方法名称 String getName = "get"+stringLetter+fieldName.substring(1); String setName = "set"+stringLetter+fieldName.substring(1); //获取相应的方法 Method getMethod = classType.getMethod(getName,new Class[]{}); Method setMethod = classType.getMethod(setName, new Class[]{field.getType()}); //调用源对象的getXXX()方法 Object value = getMethod.invoke(obj, new Object[]{}); System.out.println(fieldName+" :"+value); //调用拷贝对象的setXXX()方法 setMethod.invoke(objectCopy, new Object[]{value}); } return objectCopy; } public static void main(String[] args) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { Customer customer=new Customer(); customer.setName("yc"); customer.setId(new Long(1234)); customer.setAge(19); Customer customer2=null; customer2=(Customer)new ReflectTester().copy(customer); System.out.println(customer.getName()+" "+customer2.getAge()+" "+customer2.getId()); System.out.println(customer); System.out.println(customer2); } } class Customer{ private Long id; private String name; private int age; public Customer(){ } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
相关推荐
标题中的"Ideal---Copy.rar_matlab例程_matlab_"表明这是一个与MATLAB相关的示例程序,可能是一个模拟或分析项目。描述中提到的"sar simulation in rda algorithm"揭示了这个压缩包的内容是关于合成孔径雷达(SAR)...
压缩包中的两个“________ - Copy_1.doc”和“________ - Copy.doc”可能是详细步骤的文档,包含MATLAB代码示例和仿真过程的解释。而“H”可能是仿真结果的图形输出文件,可能显示了信号功率谱、信道特性或系统性能...
3. 利用`TerrainAltitudeTexture.skp` 模型来模拟地震波在真实地形中的传播和反射,这有助于预测地震数据的特征和解释地质构造。 总的来说,"reflection coefficient calculator in rocks" 这一主题涵盖了地震学、...
在给出的“copy_一维黎曼问题”中,我们很可能是处理一个用Fortran编写的程序,用于模拟这种问题。 Fortran是一种古老的、但仍在科学计算中广泛使用的编程语言,以其高效的数值计算能力著称。在"copy.f90"这个文件...
NLOS通信是指信号传输过程中不直接通过视线,而是经过反射、折射或散射的路径。AWGN则是通信系统中常见的噪声模型,用来模拟实际环境中的随机干扰。 在无线通信中,NLOS环境通常会导致信号衰减、多径传播和相位失真...
- `Task.FromResult()`: 返回一个已完成的任务,通常用于模拟异步操作。 9. **反射** - `Type`: 表示.NET类型的信息。 - `Activator.CreateInstance()`: 动态创建对象实例。 - `typeof()`: 获取类型对象。 - `...
在本文中,我们将深入探讨`Deepcopier`库的使用方法、原理以及它在实际开发中的应用场景。 首先,`Deepcopier`的核心功能是提供一种方式来复制包含嵌套结构的自定义类型。这包括基本类型、结构体、数组、切片、映射...
(1)STM32采集心电信号传感器数据,心率传感器采用的是PulseSensor 是一款用于脉搏心率测量的光电反射式模拟传感器。 (2)LCD显示屏显示心电数字数据,和采集状态。 (3)HC05蓝牙传实时心电信号数据到手机APP。 ...
首先创建一个Bitmap对象,表示我们的“水面”,然后通过LockBits和Marshal.Copy等方法直接访问像素数据。这样可以高效地更新大量像素,避免了频繁调用SetPixel函数带来的性能损耗。 代码实现中,可以定义一个...
- **Diffuse()**:漫反射,设置材质的颜色和反射特性。 - **Specular(淴)**:高光,设置材质的高光特性。 - **ExtendedParameters(չ)**:扩展参数,提供更多的材质设置选项。 - **Bitmap(λͼ)**:位图,使用图像...
* 基于 TCP 协议模拟 ssh 远程执行命令的 CS 架构软件 * 基于 UDP 协议套接字通信的实现 * 粘包现象与解决粘包问题 * 基于 socketserver 实现并发 socket 套接字编程 * 网络编程实战之 FTP 的文件断点续传 第十三章...
图形输出在嵌入式开发中,多数是向FrameBuffer中写数据,然后会显示在LCD中,在Linux下做图形开发的时候,需要模拟各种环境,比如16位色的环境,32位色的环境等,这个时候需要在Linux中做一个配置的修改: ...
首先,超声波检测是一种非接触式的测量方法,广泛应用于距离测量、液位检测、物体识别等多种场景。其原理是通过发射超声波脉冲,然后接收反射回来的信号,根据时间差计算目标的距离。在PCB设计中,通常会包含超声波...
- **.FLT** - Multigen Creator格式,用于专业的模拟和训练领域。 - **.FPC** - .FLT格式模型文件的Skyline打包版本。 - **.DAE** - Sketchup格式Collada标准,广泛应用于3D内容的交换。 其中,**XPC** 和 **XPL2**...
- **使用EAC抓轨**:另一种方法是使用Exact Audio Copy (EAC) 软件直接从正版CD抓取音轨,设置正确即可实现无损抓轨。 #### 六、操作系统和软件选择 - **确保系统稳定**:保证操作系统没有病毒或其它问题,并定期...
在给定的“xss注入闯关小游戏”中,我们可以深入理解这种攻击方式,通过模拟真实场景来学习如何防御和识别XSS攻击。 XSS攻击主要分为三种类型:存储型XSS、反射型XSS和DOM型XSS。存储型XSS是将恶意脚本存储在服务器...
MeshStandardMaterial 是一种物理材质,可以处理光照反射,使物体看起来更真实。我们可以设定球体的颜色和金属度、粗糙度: ```javascript const sphereMaterial = new THREE.MeshStandardMaterial({ color: '#ff...
java7 源码 KnowledgePractice ...该部分答案多为本人刷题的题解,部分问题没有官方解答,所以贡献一份思路,并将最优解答Copy至此,便于向高手学习 题目描述请移步 数组 链表 字符串 哈希表 队列 15
立方体贴图(Cube Mapping)是3D图形编程中一种重要的技术,主要应用于环境映射,为游戏和模拟应用提供高质量的反射、折射和全局光照效果。在DirectX12中,立方体贴图被广泛用于实现高效的环境光照计算,提高场景的...
而多径传播(MULTIPATH CHANNELS)是指信号在传播过程中因反射和折射产生的多个路径,导致信号到达接收端时产生干涉,形成多径衰落。 在压缩包内的三个MATLAB脚本文件中: 1. "Copy_of_unknown_16qam.m"可能是一个...