java安全策略 禁止反射_初探java安全之反射

什么是反射

反射机制在java中可以说是非常强大的,很多优秀的开源框架都是通过反射完成的。在java的运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。下面介绍下基于反射技术的函数方法。

与反射相关的,其实主要就是几个关键的函数方法。可以先从这一段简单的代码看起

public void execute(String className, String methodName) throws Exception {

Class clazz = Class.forName(className);

clazz.getMethod(methodName).invoke(clazz.newInstance()); }

在这段代码里可以先看到几个与Java反射相关的重要方法。

forname()

当无法事先知道将加载什么类的时候,就可以用class的静态方法forname来实现动态加载类,例如例如上面的实例代码。

forname静态方法也有两个版本,如下:

public static Class> forName(String className)throws ClassNotFoundException

public static Class> forName(String name, boolean initialize,ClassLoader loader)throws ClassNotFoundException

第一个就是仅通过指定类名。

第二个可以指定类名称、是否初始化及指定类加载器。这里第二个参数中的的初始化指的是类的初始化,例如p神在圈子里给出的一个例子:

public class TrainPrint {

{

System.out.printf("Empty block initial %s\n", this.getClass());

}

static {

System.out.printf("Static initial %s\n", TrainPrint.class);

}

public TrainPrint() {

System.out.printf("Initial %s\n", this.g

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值