-
0X00概念
反射机制是java语言中的中的非常重要的一个动态特性,是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法; 并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为Java 语言的反射机制。
-
0X01总结(核心)
-
0X02反射java.lang.Runtime例子
public class Invoke { public static void main(String[] args) { try { /**1. 获取Runtime对象 * 方法有三种,Class.forName("类的全路径") 、 obj.getClass() 、Test.class * 采用Class.forName() * */ Class className = Class.forName("java.lang.Runtime"); /**2. 获取Runtime构造方法*/ Constructor constructor = className.getDeclaredConstructor(); constructor.setAccessible(true);//Runtime的构造方法为私有的,所以修改访问权限 /**3. 获取实例*/ /**方式1:通过构造器方式获取实例*/ // Object instance = constructor.newInstance(); /**方式2:通过Runtime.getRuntime()获取实例*/ // 因为Runtime类的构造方法为private,所以无法通过new RunTime()方式来获取实例 // Runtime instance = Runtime.getRuntime(); /**方式3:通过反射方式获取Runtime实例*/ Object instance = className.getMethod("getRuntime").invoke(className); /**4. 获取执行的Exec方法*/ Method method = className.getMethod("exec",String.class); method.invoke(instance,"calc"); } catch (Exception e) { e.printStackTrace(); } } }
-