反射的简单使用2,使用反射调用类中的方法,并执行

//在不确定使用哪种方法的时候,可以使用反射来获取字节码对象,并使用字节码对象来调取其相关方法
public class Test {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException {
        //创建对象
        MathUtil mu = new MathUtil();
        Scanner  sc  = new Scanner(System.in);
        System.out.println("请输入第一个数字");
        int i = sc.nextInt();
        System.out.println("请输入第二个数字");
        int i1 = sc.nextInt();
        System.out.println("请输入要调用的方法");
        String next = sc.next();
        //反射
        //第一种:通过类名.class  获取字节码对象
        //Class<MathUtil>muClass = MathUtil.class;
        //第二种:通过对象的getClass方法获取字节码对象
        // Class<? extends MathUtil> muClass = mu.getClass();
        //第三种:通过Class的静态方法forName("全类名")  -----> 全类名 = 包名 +"."+ 类名),来获取字节码对象
        Class<?> muClass = Class.forName("com.homework.test2.MathUtil");
        //通过字节码对象获取方法
        Method method = muClass.getMethod(next, int.class, int.class);
        //方法对象调用invoke让成员方法执行起来
        Object invoke = method.invoke(mu, i, i1);
        System.out.println(invoke);
    }
}

//定义一个类,在类中创建n个方法
public class MathUtil {
    public int add(int a,int b){
        return a+b;
    }
    public int minu(int a, int b){
        return a - b;

    }
    public int multi(int a, int b){
        return a * b;

    }
    public int by (int a, int b){
        return a / b;

    }

}
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值