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

本文探讨了Java中的反射机制,特别是Constructor类的使用。通过示例展示了如何获取类的所有构造方法,以及如何利用Constructor的newInstance方法创建实例对象。文中还提到了newInstance方法的可变参数特性,并提醒开发者在使用反射时需要注意类型转换和异常处理。
摘要由CSDN通过智能技术生成

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));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值