JAvaにおける反射操作の構築方法
1762 ワード
JAvaにおける反射操作の構築方法
取得したコンストラクションからオブジェクトを作成するには
手順:
1.Classオブジェクトを取得
2取得構造
3.オブジェクトを構築することでインスタンス化されたオブジェクトを得る
取得したコンストラクションからオブジェクトを作成するには
手順:
1.Classオブジェクトを取得
2取得構造
3.オブジェクトを構築することでインスタンス化されたオブジェクトを得る
package com.itheima_01;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
/*
*
* Constructor>[] getConstructors()
* Constructor getConstructor(Class>... parameterTypes)
* T newInstance()
*
*Constructor:
* T newInstance(Object... initargs)
*/
public class ReflectDemo2 {
public static void main(String[] args) throws ReflectiveOperationException {
Class clazz = Class.forName("com.itheima_01.Student");
//method(clazz);
//Constructor getConstructor(Class>... parameterTypes)
//method2(clazz);
//method3(clazz);
Object obj = clazz.newInstance();
System.out.println(obj);
}
private static void method3(Class clazz)
throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
Constructor c = clazz.getConstructor(String.class,int.class);// , 1 String, 2 int
System.out.println(c);
Object obj = c.newInstance("lisi",30);
System.out.println(obj);
}
private static void method2(Class clazz)
throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
Constructor c = clazz.getConstructor();//
System.out.println(c);
Object obj = c.newInstance();
System.out.println(obj);
}
private static void method(Class clazz) {
//Constructor>[] getConstructors() : public
Constructor[] cs = clazz.getConstructors();
for (int i = 0; i < cs.length; i++) {
System.out.println(cs[i]);
}
}
}