反射获取对象

来源:互联网 发布:威武猫店铺淘宝客软件 编辑:程序博客网 时间:2024/06/05 12:48
package com.reflect;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;/** * 反射获取类,以及对象 * @author Sailing * */public class TestClassForName{public static void main(String[] args) throws Exception{Class<?> clazz = TestClassForName.getClazz1("com.reflect.Person");//Class<?> clazz = TestClassForName.getClazz2();//Class<?> clazz = TestClassForName.getClazz3();TestClassForName.doSomething(clazz);}/** * 根据类的全名,forName方法 获取【推荐使用】 * @param str * @return * @author Sailing */private static Class<?> getClazz1(String str){Class<?> clazz =null;try {clazz = Class.forName(str);} catch (ClassNotFoundException e) {e.printStackTrace();}return clazz;}/** * 根据类的  .class方法获取 * @return * @author Sailing */private static Class<?> getClazz2(){Class<?> clazz = Person.class;return clazz;}/** * 根据对象来获取 * @return * @author Sailing */private static Class<?> getClazz3(){Person p = new Person();Class<?> clazz = p.getClass();return clazz;}private static void doSomething(Class<?> clazz) throws InstantiationException, IllegalAccessException{System.out.println("class---"+clazz);Object p =TestClassForName.getInstance1(clazz);//Object p =TestClassForName.getInstance2(clazz);System.out.println(p);}/** * 由类获取对象 * @param obj * @return * @throws InstantiationException * @throws IllegalAccessException * @author Sailing */private static Object getInstance1(Class<?> clazz) throws InstantiationException, IllegalAccessException{Object instance = clazz.newInstance();return instance;}private static Object getInstance2(Class<?> clazz){Constructor<?> cons;Object instance = null;try {cons = clazz.getConstructor(new Class[] {});try {instance = cons.newInstance(new Object[]{});} catch (InstantiationException | IllegalAccessException | IllegalArgumentException| InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (NoSuchMethodException | SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();}return instance;}}

0 0
原创粉丝点击