java 反射 获取类_JAVA反射机制获取类和方法

问题:

可以通过String类型的方法名调度方法么?

可以获得特定的类么?比如当前类,隔壁的类,类的新实例,当前实例?

多态的函数具有相同的名字、不同的参数类型,如何区分呢?

如何获取指定类的参数类型等信息?

带着这些问题,我做了一些实践。总结如下:

答案:Java提供反射机制,java.lang.reflect.*,可以实现包含不限于以上功能。

下面是一些常用的通过反射获取类、调用方法的例子。关于成员、构造器的调用同理可得。想了解更多,可以查看接口文档。

package com.taobao.tuisi;

public class Actions{

public void tempMethod(Long userId){

System.out.println(“我是JAVA反射测试方法,我被invoke了” + userId);

}

public void temp() throws Exception{

//1.获得class

//获得类的当前实例

Actions a = this;

System.out.println(a);

//输出 com.taobao.tuisi.Actions$$EnhancerByCGLIB$$dff89711@c2ccac

//获得指定类的新实例

Actions b = Actions.class.newInstance();

System.out.println(b);

//输出 com.taobao.tuisi.Actions@1e4fede

//

//通过类型获得类

Class boolType = Boolean.class;

System.out.println(boolType);

//输出 class java.lang.Boolean

//

//通过变量获得类

String stringExample = “”;

Class stringType = stringExample.getClass();

System.out.println(stringType);

//输出class java.lang.String

//

//由名字获得类

Class> c = Class.forName(“com.taobao.tuisi.Actions”);

System.out.println(c);

//输出 class com.taobao.tuisi.Actions

//

//2.关于method

//由函数名和参数类型得到函数

Long userId = 9999l;

Method method = Actions.class.getDeclaredMethod(“tempMethod”, userId.getClass());

System.out.println(method);

//输出 public void com.taobao.tuisi.Actions.tempMethod(java.lang.Long)

//

//通过类、参数值调用指定函数

Actions actions = new Actions();

Long args[] = new Long [1];

args[0] = userId;

method.invoke(actions, args);

//输出 我是JAVA反射测试方法,我被invoke了9999

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值