import java.lang.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
/*Constructor类代表某个类中的一个构造方法
得到某个类所有的构造方法:
Constructor [] constructor =
得到某一个构造方法
Constructor constructor =
clsss,forName("java.lang.string")。getConstructor(stringBuffer。class)
常见实例对象
通常方式:String str =new String (new StringBuffer("abc"))
反射方式:String str=(String)constructor.newinstance(new StringBuffer("abc")) */
public class ReflectDemo {
/**
* @param args
* @throws ClassNotFoundException
* @throws NoSuchMethodException
* @throws SecurityException
* @throws InvocationTargetException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws IllegalArgumentException
*/
public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException {
// TODO Auto-generated method stub
String str1="abc";
Class cls1=str1.getClass();
Class cls2=String.class;
Class cls3=Class.forName("java.lang.Math");
System.out.println(cls1==cls2);
System.out.println(cls3==cls2);
System.out.println(cls1.isPrimitive());
System.out.println(int.class.isPrimitive());
System.out.println(Integer.class.isPrimitive());
System.out.println(int.class==Integer.TYPE);
System.out.println(int[].class.isPrimitive());
System.out.println(int[].class.isArray());
Constructor constructor1=String.class.getConstructor(StringBuffer.class);
//创建一个Constructor类型的对象,该对象是String类的构造函数,该构造函数传入的是StringBuffer的一个参数
String str2=(String) constructor1.newInstance(new StringBuffer(new StringBuffer());
//获得String构造方法的一个新的实例对象,该构造方法传入的参数类型是StringBuffer
加(String)原因是该程序编译时并不知道该构造方法是谁的构造方法,所以要强制转换成String类的构造方法
}
|