Java学习记 反射 invoke()

Java核心技术卷 反射

反射最后的一个知识点
代码实例

package reflection.methods;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class MethodTableT {
    public static void main(String[] args) throws NoSuchMethodException {
        Method square = MethodTableT.class.getMethod("square", double.class);
       // Method sqrt = Math.class.getMethod("sqrt" , double.class);
	Class c1 = Class.forName("java.lang.Math");
	Method sqrt = c1.getMethod("sqrt" , double.class);

        printTable(1,10,10,square);
        printTable(1,10,10,sqrt);
    }

    public static double square(double x){
        return x*x;
    }

    public static void printTable(double from , double to ,int n , Method f){
        System.out.println(f);
        double dx = (to - from)/(n - 1);
        for(double x = from ; x <= to ; x += dx){
            try {
                //  invoke(implicitParameter,explicitParameter)  静态方法 第一个参数可忽略将其设置为null
                // invoke的参数返回值类型必须是Object类型
                double y = (double) f.invoke(null , x);//f 代表 square方法
                System.out.printf("%10.4f | %10.4f%n", x , y);  // printf格式转换  println  print 区别
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

调用任意方法
自定义方法square f.invoke()
Java中Math.sqrt()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值