Java反射使用示例

当我们使用 Java 反射时,有时需要在运行时动态地调用某个类的方法,例如使用配置文件指定要调用的方法,或者根据用户输入来决定调用哪个方法等。下面我们就来看几个动态调用方法的例子。

  1. 调用无参方法

假设有一个类名为 MyClass,它有一个无参方法 myMethod(),我们想在运行时动态地调用该方法,可以使用反射来实现:

Class clazz = MyClass.class;
Object obj = clazz.newInstance();
Method method = clazz.getMethod("myMethod");
method.invoke(obj);

上述代码中,我们首先获取 MyClass 的 Class 对象,然后使用 newInstance() 方法创建 MyClass 的一个实例,接着使用 getMethod() 方法获取 myMethod 方法的 Method 对象,最后使用 invoke() 方法调用该方法。

  1. 调用带参数方法

假设有一个类名为 MyClass,它有一个带参数方法 myMethod(String str),我们想在运行时动态地调用该方法,并传入参数,可以使用反射来实现:

Class clazz = MyClass.class;
Object obj = clazz.newInstance();
Method method = clazz.getMethod("myMethod", String.class);
method.invoke(obj, "Hello, world!");

上述代码中,我们首先获取 MyClass 的 Class 对象,然后使用 newInstance() 方法创建 MyClass 的一个实例,接着使用 getMethod() 方法获取 myMethod 方法的 Method 对象,最后使用 invoke() 方法调用该方法,并传入参数。

  1. 调用静态方法

假设有一个类名为 MyClass,它有一个静态方法 myStaticMethod(),我们想在运行时动态地调用该方法,可以使用反射来实现:

Class clazz = MyClass.class;
Method method = clazz.getMethod("myStaticMethod");
method.invoke(null);

上述代码中,我们首先获取 MyClass 的 Class 对象,接着使用 getMethod() 方法获取 myStaticMethod 方法的 Method 对象,最后使用 invoke() 方法调用该方法。由于 myStaticMethod 是静态方法,因此我们可以将第一个参数设为 null。

  1. 调用私有方法

假设有一个类名为 MyClass,它有一个私有方法 myPrivateMethod(),我们想在运行时动态地调用该方法,可以使用反射来实现:

Class clazz = MyClass.class;
Object obj = clazz.newInstance();
Method method = clazz.getDeclaredMethod("myPrivateMethod");
method.setAccessible(true);
method.invoke(obj);

上述代码中,我们首先获取 MyClass 的 Class 对象,然后使用 newInstance() 方法创建 MyClass 的一个实例,接着使用 getDeclaredMethod() 方法获取 myPrivateMethod 方法的 Method 对象,由于 myPrivateMethod 是私有方法,因此我们需要调用 setAccessible(true) 方法来允许访问私有方法,最后使用 invoke() 方法调用该方法。

这就是几个动态调用方法的例子。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值