`
qinjingkai
  • 浏览: 259846 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

java反射之创建实例

阅读更多

             为了做到使得程序具有更高的灵活性,可配置性,在开发中我们经常利用反射来创建一个类的实例,也就是获得一个类的一个对象!通常的做法是通过class.newInstance获得;但这种方法有一个不好的地方,那就是他只能创建无参构造器的对象,如果构造器有参数那它是无能为力的;解决的方法就是 先通过该类的Class获得带有参数的构造器,然后通过得到的构造器和传如的初始化参数来创建实例!以下是上述做法的一个demo:

 

1 实体类:

package reflect;

public class Duck {

	private Integer weight;
	private String name;
	
	public Duck(){
	  System.out.println("无参调用了");	
	}
	
	
   public Duck(String name){
	   name=name;
	   System.out.println("one参调用了");	
	}
   
   public Duck(String name,Integer weight){
	   name=name;
	   weight=weight;
	   System.out.println("Two参调用了");	
	}
}

 2 测试类

package reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class ExeTest {
	
	public static void main(String[] args) {
		Class  cls=Duck.class;


	   Class conargs[]={String.class,Integer.class};
	   
	   try {
		Constructor constructor=cls.getConstructor(conargs);


		String name="abc";
		Integer weight=new Integer(1056);
		Object initargs []={name,weight};
		constructor.newInstance(initargs);


		
	} catch (SecurityException e) {
		
		e.printStackTrace();
	} catch (NoSuchMethodException e) {
		e.printStackTrace();
	} 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();
	}
		
	}

}
分享到:
评论

相关推荐

    java 反射实例,大量注释,简单易懂

    一个java反射的例子,通过java反射机制,动态生成java实例,动态执行方法。例子中有大量注释,简单易懂。

    Java反射应用实例

    代码主要实现了Java反射应用实例, 包含利用反射方法创建对象(使用默认构造函数和自定义构造函数),访问对应对象的方法(包括带参数的和不带参数的),访问对应对象的域(Field). 从这里可以看到代码的详细解说:...

    反射实例-JAVA反射机制

    Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件 之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内 部信息,而不是...

    JAVA反射机制的入门代码

    代码为JAVA反射的一个DEMO,适合初学者临摹学习,还附有properties的创建方法,比较基础。

    在Java中使用反射API的一个实例

    在不知道类名的情况下如何动态的使用其构造方法来创建对象和不知道其方法名的时候如何动态地使用其方法。

    Java反射之类的实例对象的三种表示方式总结

    下面小编就为大家带来一篇Java反射之类的实例对象的三种表示方式总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java反射与泛型综合例子

    NULL 博文链接:https://zouwu85.iteye.com/blog/801921

    利用反射生成泛型类对象

    反射和泛型是一种重要的解决途径。 此代码是一个生成泛型对象的类。 比如: Pool<Point> pool = new Pool(){}; Point p = pool.get(x, y); //在此构造Point对象 ... pool.put(p); 希望能帮助那些为查找泛型构造器、...

    Java常用的反射方法

    创建一个Person实体类 2. 反射获取Class类对象的三种方法 2.1 通过全类名的方式获取 2.2 类名.class 2.3 实例对象.getClass() 2.4 总结 3. 反射获取属性变量 3.1 获取所有public修饰符的成员变量 3.2 获取...

    基础深化和提高-java反射技术

    Java反射技术指的是在运行时动态地获取类的信息、调用对象的方法、操作类的属性等能力。通过反射,程序可以在运行时检查类、实例化对象、调用方法、获取和设置属性,甚至可以动态修改类的结构。 Java反射技术的核心...

    codeegginterviewgroup#CodeEggDailyInterview#187.反射的原理,反射创建类实例的三种

    反射的原理,反射创建类实例的三种方式是什么反射机制:在通常情况下,如果有一个类,可以通过类创建对象;(2)类.class:需要输入一个明确的类Class cla

    动力节点_Java基础视频教程163_反射创建实例

    动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础语法、Java的面向对象。每一个知识点都讲解的非常细腻,由浅入深。适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础...

    Java高级程序设计实战教程第三章-Java反射机制.pptx

    Java高级程序设计 第3章 Java反射机制 3.1 应用场景 3.2 相关知识3.3 实施过程 3.4 拓展知识3.5 拓展训练 3.6 课后小结3.7 课后习题 3.8 上机实训 Java高级程序设计实战教程第三章-Java反射机制全文共15页,当前为第...

    Java动态调用实例

    自己编写的java调用实例,通过配置文件进行组件的装配,通过反射进行对象的创建,通过接口进行对象的调用。组件依赖的对象和对象的行为通过配置文件配置

    Java经典编程源码基础例程300.zip

    实例078 利用反射重写toString()方法 119 第8章 字符串与包装类 121 实例079 将数字格式化为货币字符串 122 实例080 货币金额大写格式 123 实例081 String类格式化当前日期 125 实例082 字符串大小写转换 1

    JAVA 范例大全 光盘 资源

    实例3 在Eclipse中创建第一个Java程序 4 常见问题 javac不是内部或者外部命令 6 常见问题 找不到类文件 6 常见问题 语法错误 7 第2章 Java基础语法 9 实例4 变量和常量 9 实例5 基本数据类型转换 10 实例6 ...

    JAVA中的反射机制(内含大量实例)

    JAVA中的反射机制(内含大量实例)Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到...

    Python中动态创建类实例的方法

    在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢?其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模块

    java反射机制原理详解.docx

    我们创建一个类,通过编译,生成对应的.calss文件,之后使用java.exe加载(jvm的类加载器)此.class文件,此.class文件加载到内存以后,就是一个运行时类,存在缓存区,那么这个运行时类的本身就是一个class的实例 ...

    java反射配置文件实现

    // 创建实例, 生成对象; Constructor con=c.getDeclaredConstructor(String.class,int.class); // 反映此 Class 对象所表示的类或接口的指定构造方法。 /* 跟 Student类中的两个参数的构造方法对应 * public ...

Global site tag (gtag.js) - Google Analytics