`

使用反射技术构造对象

阅读更多

public class Bean {

    private int id;

    private String name;

    public int getId() {

       return id;

    }

    public void setId(int id) {

       this.id = id;

    }

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

    public Bean(String name){

       this.name=name;

    }

    public Bean(int id,String name){

       this.id=id;

       this.name=name;

    }

    public String toString() {

       return "id="+this.id+" name="+this.name;

    }

}

 

public class Bean2 {

    private String name;

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

    public Bean2(){

      

    }

    public Bean2(String name){

       this.name=name;

    }

    public String toString() {

       return "name="+this.name;

    }

}

测试:

public class ReflectTest {

 

    public static void main(String[] args) throws Exception {

       Bean2 b2=(Bean2) test1(Bean2.class);

       System.out.println(b2);

      

       Bean bean=(Bean)test2(Bean.class);

       System.out.println(bean);

       //传不同的Class就能得到不同的对象

       Bean2 b=(Bean2)test2(Bean2.class);

       System.out.println(b);

      

       Bean bea=(Bean)test3(Bean.class);

       System.out.println(bea);

      

    }

    public static Object test1(Class clazz) throws Exception{

       Object obj=null;

       obj=clazz.newInstance();//这种方式只能构造出有无参数的构造方法的对象出来      

       return obj;

    }

   

    public static Object test2(Class clazz) throws Exception{

       Object obj=null;

       Constructor con=clazz.getConstructor(String.class);//只要构造方法带有一个String型的对象都可以

       obj=con.newInstance("test2");

       return obj;

    }

   

    public static Object test3(Class clazz) throws Exception{

       Object obj=null;

       Constructor con=clazz.getConstructor(int.class,String.class);////只要构造方法带有一个intString型的对象都可以,注意intString顺序

       obj=con.newInstance(22,"张明学");

       return obj;

    }

}

分享到:
评论

相关推荐

    C# 反射技术应用

    C# 反射技术应用  反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个...

    Java常用的反射方法

    反射获取Class类对象的三种方法 2.1 通过全类名的方式获取 2.2 类名.class 2.3 实例对象.getClass() 2.4 总结 3. 反射获取属性变量 3.1 获取所有public修饰符的成员变量 3.2 获取指定字段并赋值 3.3 获取...

    java反射技术讲解

    动态获取类的信息,以及动态调用对象的方法的功能来自于Java语言的...l 在运行时构造任意一个类的对象; l 在运行时判断任意一个类所具有的成员变量和方法; l 在运行时调用任意一个对象的方法; l 生成动态代理。

    dotNet程序另类注册机--反射技术初探

    “反射(Reflection)是.NET中的一个重要技术,通过反射,可以在运行时获得某个类型的各种信息,包括方法、属性、事件及构造函数等,还可以获得每个成员的名称、限定符和参数等信息。可以说有了反射,即可对每个类型...

    [Java核心技术]-反射技术

    反射: 将类的各个组成部分封装成其他对象 反射是框架实际的灵魂 框架: 半成品软件,可以在狂角点基础上进行软件开发 反射带来的好处 可以在程序运行过程中,操作这些对象 可以解耦 Java程序执行过程 拿一个People类...

    反射,动态代理,正则,注解

    在操作String类对象时,会经常遇到对字符串进行验证的功能,而按照我们之前学习的String类,我们使用String类中的诸多函数是可以完成对字符串校验功能的,但是代码相对来说比较麻烦,所以在Java中引入正则表达式的...

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    第13章反射技术 第14章实验指导3 下篇UML 第15章UML入门 第16章用例图 第17章类图和对象图 第18章实验指导4 第19章顺序图、协作图、状态图和活动图 第20章包图、构件图和部署图 第21章实验指导5 ...

    Java-Reflection-Tutorial.pdf

    java 反射实战demo,Java的反射(reflection)机制是指在程序的运行...我理解的Java反射的原理就是获取Class对象然后使用java.lang.reflect里提供的方法操作Class对象,Class与java.lang.reflect构成了java的反射技术。

    java 反射Reflection;Class类

    1.反射机制概述 java能够反射的前提:已经加载过这个类 ...在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的成员变量和方法生成动态代理 java反射机制的

    day021-反射和注解笔记和代码.rar

    框架(提高开发效率的别人封装好的代码)底层都是使用反射技术。例如:Tomcat、Spring... 3. 缺点:破坏封装性,性能低下(以后,能不用反射技术就不用) 3. 使用:(重点) 1. 获取字节码文件 1...

    使用PHP反射机制来构造”CREATE TABLE”的sql语句

    这种动态获取的信息以及动态调用对象的方法的功能称为反射API。反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用。 其用途如:自动加载插件,自动生成文档,甚至可用来扩充...

    HomeWork.zip

    请为第1题目中Person类创建实例(对象),并为每个属性赋值,然后采用反射技术,把创建的Person实例的属性值存入文本文件中,文本文件的格式为: idNo = 5122245566 name = 张小平 age = 23 sex = Male isMerried ...

    候捷谈Java反射机制

    这个字的意思是“反射、映象、倒影”,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods...

    Java反射机制重点总结

    文章目录Java ReflectionJava反射机制提供的功能Java反射相关的主要API...对象通过反射调用类的完整结构获取实现的全部接口获取所继承的父类获取全部的构造器获取全部的方法获取全部的属性获取Annotation相关获取泛型...

    Java开发技术大全 电子版

    3.6.1无参数构造方法的定义和使用129 3.6.2带参数构造方法的定义和使用131 3.6.3this关键字和构造方法的调用132 3.7静态方法133 3.7.1静态方法的声明和定义134 3.7.2静态方法和实例方法的区别134 3.7.3静态...

    Java2核心技术.part5

    5.5.3在运行时使用反射分析对象 5.5.4使用反射编写通用的数组代码 5.5.5方法指针 5.6枚举类 5.7继承设计技巧 第6章接口与内部类 6.1接口 6.1.1接口的特性 6.1.2接口与抽象类 6.2对象克隆 ...

    使用动态代理演示Spring的AOP编程原理

    其实,Spring没有什么东西,不就是反射技术加设计模式的编程嘛。为了说明Spring的AOP原理,本人使用代理模式中的动态代理完成演示AOP编程的原理的演示。相信,如果你耐心看完整个程序(几乎一行注释一行代码),那么你...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    · 使用CLR寄宿、AppDomain、程序集加载、反射和C#的dynamic类型来构造具有动态扩展能力的应用程序 本书作者作者Jeffrey Richter,.NET和Windows编程领域当之无愧的大师和权威,以著述清楚明了,行文流水,言简意赅...

Global site tag (gtag.js) - Google Analytics