首页 > 其他分享 >反射(二)Class类,Method类,Field类,反射获得带参数的对象

反射(二)Class类,Method类,Field类,反射获得带参数的对象

时间:2022-11-04 17:32:30浏览次数:45  
标签:反射 name printStackTrace age Object Method Field catch public

package com.ygl.reflect;



import java.lang.reflect.Constructor;

import java.lang.reflect.InvocationTargetException;



public class ReflectTest {

public Object copy(Object object) throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException{

//使用对象的getClass()方法,前提先有对象实例

Class<?> clazz=object.getClass();

System.out.println(clazz.getName());//com.ygl.reflect.Customer

try {

/*
//无参的构造器

Constructor cons=clazz.getConstructor(new Class[]{});

//无参的实例

Object obj=cons.newInstance(new Object[]{});

System.out.println(obj);

//上面两个方法等价于

Object obj2=clazz.newInstance();//只能构造无参的对象

*/


Constructor cons=clazz.getConstructor(new Class[]{String.class,int.class});

Object obj=cons.newInstance(new Object[]{"ygl",25});

} catch (SecurityException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (NoSuchMethodException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}



return object;


}



public static void main(String[] args) {

ReflectTest reflectTest=new ReflectTest();

try {

reflectTest.copy(new Customer());

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InstantiationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalAccessException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InvocationTargetException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println();

}

}





class Customer{

private Long id;

private String name;

private int age;


public Customer() {


}


public Customer(String name,int age) {

this.name=name;

this.age=age;

}



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;

}

}

标签:反射,name,printStackTrace,age,Object,Method,Field,catch,public
From: https://blog.51cto.com/u_10028442/5824126

相关文章

  • Junit和反射
    @Before :初始化方法,用于资源申请,所有测试方法在执行之前都会先执行该方法 @After :释放资源方法,在所有测试方法执行完后,都会自动执行该方法 反射:框架设计的灵魂......
  • Calico 路由反射模式权威指南
    1.概述作为Kubernetes最长使用的一种网络插件,Calico具有很强的扩展性,较优的资源利用和较少的依赖,相较于Flannel插件采用Overlay的网络,Calico可以通过三层路由的......
  • Unknown column 'Extent1.Discriminator' in 'field list'
    网上的解决办法在使用entityframework的时候经常会出现Unknowncolumn'Extent1.Discriminator'in'fieldlist'这样的错误这是由于在dbmodel在被继承后添加了部分属性......
  • C++ 反射机制
    前言反射的概念:指程序在运行时,访问、检测和修改它本身状态或行为的一种能力。wikipedia简单的来说,就是一种自描述和自控制的能力。如果联想到镜子,就可以很好的理解,你能通......
  • Java反射
    一Java安全可以从反序列化漏洞开始说起,反序列化漏洞⼜可以从反射开始说起正是反射使得Java拥有了动态特性,对象可以通过反射获取他的类,类可以通过反射拿到所有⽅法(包括私......
  • method
    packagemethod;publicclassDemo01{publicstaticvoidmain(String[]args){//intsum=add(1,2);//System.out.println(sum);t......
  • Flask HTTP 405错误--Method not allowed
    环境Flask2.2.2 代码如下fromflaskimportFlask,requestapp=Flask(__name__)@app.route('/test/',methods=['POST'])deft():return{'out':1}i......
  • 多线程 & 反射 & 注解 & JDBC 核心点总结
    多线程核心点:线程安全创建线程的两种方式线程生命周期获取、修改线程名获取当前线程对象静态方法sleep()通过异常终止线程的睡眠interrupt()强行终止线程合理......
  • Java反射
    Java反射动态语言:动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上变化,比如常见的JavaScript就是动态语言,除此之外Ru......
  • Java学习之NoClassDefFoundError、ClassNotFoundException、NoSuchMethodError
    在菜逼如我短短的三年职业编码生涯中,无数次遇到这两个异常,故而总结一下。Java异常体系大致提一些,不是本文的重点。两者都是标准异常,平时碰到最多的是ClassNotFoundExceptio......