`

构造方法的反射应用constructor方法newInstance(Obeject...initargs)功能

 
阅读更多

Constructor类代表某个类中的一个构造方法

得到某个类所有的构造方法:Constructor []constructors=Class.forName("java.lang.String").getConstructs();

得到某个类的某个构造方法

Constructor constructor=Class.forName("java.lang.String").getConstructor(StringBuffer.class);//获得方法时要用到的类型

创建实例对象

通常方式:String str=new String(new StringBuffer("abc"));

反射方式:String str=(String)constructor.newInstance(new StringBuffer("abc"));//调用获得的方法时要用到上面相同类型实例对象

Class.newInstacne()方法:

String obj=(String)Class.forName("java.lang.String").newInstance();

该方法内部先得到默认的构造方法,然后用该构造方法来创建实例对象。该方法内部的具体代码用到了缓存机制来保存默认构造方法的实例对象。

 

-----------------------------------------------------------

Constructor的方法 newInstance(Object...initargs)功能//可变参数

newInstance方法是根据构造函数来生成对象

其中initargs就是你这个对象的构造函数的参数,如果构造函数是无参的,就一个也不要传,这个列表和构造函数的参数列表时一样的,只不过,当是基本数据类型传入的时候,需要一个包装类来包装它,但是jdk1.5也可以直接传入基本数据类型了,因为编译器会帮你自动装箱,拆箱

package cn.itcast.heima;

import java.lang.reflect.Constructor;

public class ReflectTest {

 

 public static void main(String[] args)throws Exception {//注意抛出异常

  // TODO Auto-generated method stub

  //开发程序时要明确 编译时跟运行时 编译时 只是将代码翻译成二进制文件 没有执行 一些错误可能不会出现 但是一运行就出现问题了 类型转化

        String str2="abc";

        Class cls1=str2.getClass();

        Class cls2=String.class;

        Class cls3=Class.forName("java.lang.String");

  Constructor constructor=String.class.getConstructor(StringBuffer.class);//StringBuffer 类型

       String str=(String) constructor.newInstance(new StringBuffer("abc"));//同样类型的对象

       System.out.println(str.charAt(2));

 }

}

分享到:
评论

相关推荐

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

    Class类中方法newInstance():创建当前字节码对象(只能调用无参且是public修饰的构造方法) 2. 根据字节码文件获取构造方法、普通方法、字段等 构造方法 Constructor[] constructors...

    Java跳过构造方法新建对象

     (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。  (3) 调用对象的clone()方法。  (4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 ...

    JAVA核心知识点整理(有效)

    2.2.3. 本地方法区(线程私有) ................................................................................................................ 23 2.2.4. 堆(Heap-线程共享)-运行时数据区 .....................

    java反射配置文件实现

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

    Java 反射(Reflection) 经典实用例子

    Java提供了一套机制来动态执行方法和构造方法,以及数组操作等,这套机制就叫——反射。反射机制是如今很多流行框架的实现基础,其中包括Spring、Hibernate等。原理性的问题不是本文的重点,接下来让我们在实例中...

    Java 高级特性.doc

    class.newInstance()内部其实就是在用默认的构造方法 ----------------------- 讲Method //方法 Method charAt = Class.forName("java.lang.String").getMethod("charAt", int.class); System.out.println...

    ZendFramework中文文档

    另外的功能 7.8.4.3.6. AjaxContext 函数 7.8.4.4. FlashMessenger 7.8.4.4.1. 简介 7.8.4.4.2. Basic Usage Example 7.8.4.5. JSON 7.8.4.6. 转向器(Redirector) 7.8.4.6.1. 介绍 7.8.4.6.2. 基础用例 ...

    eclipse安卓开发必备工具

    这样就可以创建只有构造函数的实例、调用私有构造方法,访问类的私有属性。 呵呵,这样好像java安全性就大大降低.如果你非常注重应用的安全性,java当然考虑到这方面,你可以在JVM启动参数增加 -Djava.security....

    perl对象经典例题

    This example demonstrates how to a base class (or super class) inherited instance variables, and the instance variables to the new object in the method for their own constructor calls the base class.

    超级有影响力霸气的Java面试题大全文档

    忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 28、short s1 = 1; s1 =...

    java 面试题 总结

    忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 25、short s1 = 1; s1 =...

    JAVA面试题最全集

    除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有什么区别? 38.列举三种以上垃圾回收算法,并比较其优缺点? 39....

    Class.js:在JS中实现类和继承

    提供一种通过使用JavaScript的本机原型继承来构造具有继承,非静态和静态方法/变量的类的简单方法。 调用方法时,可以使用超级方法。 ##例子 //Create a new class var ClassA = Class . create ( { //...

    learn[removed]一个简单的示例,了解Javascript及其概念的工作方式

    ES6类和继承ES6-classes.js 如何定义班级 //CODE GOES HERE}```如何定义构造函数 constructor(){ //INITIAL PROPERTIES GOES HERE }}```如何添加方法 constructor(){ //INITIAL PROPERTIES GOES HERE } METHODNAME()...

Global site tag (gtag.js) - Google Analytics