java反射机制

package Administrate;

import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Test {
    public static void main(String[] args){
        Class cla;
        try {
            //第一种写法  Class cla=okjbvc.class;
            /*okjbvc ok=new okjbvc();//第二种写法
            Class cla=ok.getClass();*/
            //第三种写法:根据class路径获取
            cla = Class.forName("Administrate.okjbvc");
            //获取该类所有属性
            Field[] field = cla.getDeclaredFields();
            System.out.println("属性");
            for (Field F : field) {
                System.out.println(F);
            }
            System.out.println("set/get封装");
            //获取该类所有set/get封装
            Method[] Method = cla.getDeclaredMethods();
            for (Method M : Method) {
                System.out.println(M);
            }
            System.out.println("构造方法");
            //获取该类所有构造方法
            Constructor[] Constructor = cla.getDeclaredConstructors();
            for (Constructor C : Constructor) {
                System.out.println(C);
            }
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            Class cla1=Class.forName("Administrate.okjbvc");
            Constructor Const=cla1.getDeclaredConstructor(String.class,int.class,String.class);
            Const.setAccessible(true);//如果该方法是private,true是变为public,flase是改为private
            okjbvc ok=(okjbvc)Const.newInstance("你我他",88,"岁");
            System.out.println(ok.getName()+ok.getAge()+ok.getG());


            okjbvc o = new okjbvc();
            Field Field=cla1.getDeclaredField("name");
            Field.setAccessible(true);
            Field.set(o, "你我他");
            System.out.println(o.getName());

            Method ME=cla1.getMethod("setName", String.class);
            ME.invoke(o, "oo");
            System.out.println(o.getName());

        } catch (ClassNotFoundException e) {
            System.out.println("找不见的类路径");
            e.printStackTrace();
        } catch (NoSuchMethodException e) {//调用不到方法
            e.printStackTrace();
        } catch (SecurityException e) { //安全异常
            e.printStackTrace();
        } catch (InstantiationException e) {//实例化异常
            e.printStackTrace();
        } catch (IllegalAccessException e) {//非法访问异常
            e.printStackTrace();
        } catch (IllegalArgumentException e) {//非法论点异常
            e.printStackTrace();
        } catch (InvocationTargetException e) {//调用目标异常
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值