扫一扫关注公众号,长期致力于安全研究
最近一段时间一直在学习JAVA安全方面的知识,但从深入来讲,很多地方都用到了反射,所以从新复习了一遍,做了几个反射的练习题,来巩固一下。由于网上有很多文章讲解了反射基础的内容,所以本人不重复“造轮子”。直接拿出现有的例题,来做分析。
public void test07()throws Exception{
Class cls = Class.forName("org.example.pojo.PrivateTest");
PrivateTest privateTest = (PrivateTest) cls.newInstance();
Field name = cls.getDeclaredField("name");
name.setAccessible(true);
name.set(privateTest,"Met32");
Method method = cls.getMethod("getName");
Object obj = method.invoke(privateTest);
System.out.println(obj);
}
有了例题1的基础后,玩一个实操吧。
File类存在于java.io中,通过forName获取即可。之后通过getDeclaredConstructors获取所有构造器,遍历输出即可
既然要创建一个txt文件,说明在构造初始化需要传入一个String类型的参数
所以直接通过cls.getConstructor(String.class)得到Constructor,得到之后通过newInstance传入文件名,到这步,就相当于
File file = new File("d://mynew.txt")
public void test08()throws Exception{
Class cls = Class.forName("java.io.File");
Constructor[] constructors = cls.getDeclaredConstructors();
for (Constructor constructor : constructors) {
System.out.println(constructor);
}
Constructor constructor = cls.getConstructor(String.class);
Object obj = constructor.newInstance("d://mynew.txt");
Method method = cls.getMethod("createNewFile");
method.invoke(obj);
}
下方扫一下扫,即可关注
原文始发于微信公众号(安全族):浅谈JAVA反射机制
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论