~~给我一个反射的例子~~

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【Object_yao1】截止到2008-07-20 23:57:07的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:100                      每贴平均分数:100                      
    回帖的总数量:1                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:1                        结贴的总分数:100                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    Class  c = Class.forName("java.lang.String");
    Class param[] =new Class[0];
    Constructor  ctor = c.getConstructor(param); 
    String string=(String)ctor.newInstance(param); 
    System.out.println("string = " + string);
      

  3.   

    import java.lang.reflect.Array;
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;public class Reflection
    {
        /**
         * 得到某个对象的公共属性
         * 
         * @param owner,
         *            fieldName
         * @return 该属性对象
         * @throws Exception
         * 
         */
        public Object getProperty(Object owner, String fieldName) throws Exception
        {
            Class ownerClass = owner.getClass();        Field field = ownerClass.getField(fieldName);        Object property = field.get(owner);        return property;
        }    /**
         * 得到某类的静态公共属性
         * 
         * @param className
         *            类名
         * @param fieldName
         *            属性名
         * @return 该属性对象
         * @throws Exception
         */
        public Object getStaticProperty(String className, String fieldName) throws Exception
        {
            Class ownerClass = Class.forName(className);        Field field = ownerClass.getField(fieldName);        Object property = field.get(ownerClass);        return property;
        }    /**
         * 执行某对象方法
         * 
         * @param owner
         *            对象
         * @param methodName
         *            方法名
         * @param args
         *            参数
         * @return 方法返回值
         * @throws Exception
         */
        public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception
        {        Class ownerClass = owner.getClass();        Class[] argsClass = new Class[args.length];        for (int i = 0, j = args.length; i < j; i++)
            {
                argsClass[i] = args[i].getClass();
            }        Method method = ownerClass.getMethod(methodName, argsClass);        return method.invoke(owner, args);
        }    /**
         * 执行某类的静态方法
         * 
         * @param className
         *            类名
         * @param methodName
         *            方法名
         * @param args
         *            参数数组
         * @return 执行方法返回的结果
         * @throws Exception
         */
        public Object invokeStaticMethod(String className, String methodName, Object[] args)
            throws Exception
        {
            Class ownerClass = Class.forName(className);        Class[] argsClass = new Class[args.length];        for (int i = 0, j = args.length; i < j; i++)
            {
                argsClass[i] = args[i].getClass();
            }        Method method = ownerClass.getMethod(methodName, argsClass);        return method.invoke(null, args);
        }    /**
         * 新建实例
         * 
         * @param className
         *            类名
         * @param args
         *            构造函数的参数
         * @return 新建的实例
         * @throws Exception
         */
        public Object newInstance(String className, Object[] args) throws Exception
        {
            Class newoneClass = Class.forName(className);        Class[] argsClass = new Class[args.length];        for (int i = 0, j = args.length; i < j; i++)
            {
                argsClass[i] = args[i].getClass();
            }        Constructor cons = newoneClass.getConstructor(argsClass);        return cons.newInstance(args);    }    /**
         * 是不是某个类的实例
         * 
         * @param obj
         *            实例
         * @param cls
         *            类
         * @return 如果 obj 是此类的实例,则返回 true
         */
        public boolean isInstance(Object obj, Class cls)
        {
            return cls.isInstance(obj);
        }    /**
         * 得到数组中的某个元素
         * 
         * @param array
         *            数组
         * @param index
         *            索引
         * @return 返回指定数组对象中索引组件的值
         */
        public Object getByArray(Object array, int index)
        {
            return Array.get(array, index);
        }
    }
      

  4.   

    /**
     * 
     */
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.lang.reflect.Modifier;
    import java.util.Scanner;
    /**
     * @author zhangliguo
     *
     */
    @SuppressWarnings("unchecked")
    public class TestReflection01 {
    public static void main(String[] args) {
    System.out.println("请输入类型名称:");
    Scanner scan = new Scanner(System.in);
    String className = scan.next();
    System.out.println("当前类型:" + className); try {
    //获取Class对象
    Class c = Class.forName(className);

    //解析属性信息
    Field[] fs = c.getDeclaredFields();
    for (Field f : fs) {
    System.out.println("----------------------------------------------");
    System.out.println("属性:" + f.toString());
    System.out.println("\t数据类型:" + f.getType());
    System.out.println("\t属性名:" + f.getName());
    int mod = f.getModifiers();
    System.out.println("\t属性修饰符:" + Modifier.toString(mod));
    }

    //解析方法信息
    Method[] ms = c.getDeclaredMethods();
    for(Method m : ms){
    System.out.println("----------------------------------------------");
    System.out.println("方法:" + m.toString());
    System.out.println("\t方法名:" + m.getName());
    int mod = m.getModifiers();
    System.out.println("\t方法修饰符:" + Modifier.toString(mod));
    System.out.print("\t方法参数列表:");
    Class pts[] = m.getParameterTypes();
    for (int i = 0; i < pts.length; i++) {
    Class class1 = pts[i];
    if(i != 0 )
    System.out.print(", ");
    System.out.print(class1);
    }
    System.out.println();
    System.out.println("\t返回值类型:" + m.getReturnType());
    }

    //解析构造方法信息
    Constructor[] cs = c.getDeclaredConstructors();
    for (Constructor con : cs) {
    System.out.println("----------------------------------------------");
    System.out.println("构造方法:" + con.toString());
    System.out.println("\t方法名:" + con.getName());
    int mod = con.getModifiers();
    System.out.println("\t方法修饰符:" + Modifier.toString(mod));
    System.out.print("\t方法参数列表:");
    Class pts[] = con.getParameterTypes();
    for (int i = 0; i < pts.length; i++) {
    Class class1 = pts[i];
    if(i != 0 )
    System.out.print(", ");
    System.out.print(class1);
    }
    System.out.println();
    }
    System.out.println("----------------------------------------------");

    //解析当前类类型的父类
    Class superClass = c.getSuperclass();
    System.out.println("当前类的父类:" + superClass.toString());
    System.out.println("----------------------------------------------");

    //解析当前类实现的接口
    Class[] interfaces = c.getInterfaces();
    System.out.print("当前类所实现接口:");
    for (Class class1 : interfaces) {
    System.out.print(class1.toString() + "\t");
    }
    System.out.println("\n----------------------------------------------");

    //解析当前类型所在包信息
    Package p = c.getPackage();
    System.out.println("当前类所在包" + p.toString());
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    }}