Java反射操作的是java.lang.Class对象,所以我们需要先想办法获取到Class对象,通常我们有如下几种方式获取一个类的Class对象:

    1. 类名.class,如:com.anbai.sec.classloader.TestHelloWorld.class
    2. Class.forName("com.anbai.sec.classloader.TestHelloWorld")
    3. classLoader.loadClass("com.anbai.sec.classloader.TestHelloWorld");

    获取数组类型的Class对象需要特殊注意,需要使用Java类型的描述符方式,如下:

    1. Class<?> doubleArray = Class.forName("[D");//相当于double[].class
    2. Class<?> cStringArray = Class.forName("[[Ljava.lang.String;");// 相当于String[][].class

    获取Runtime类Class对象代码片段:

    1. String className = "java.lang.Runtime";
    2. Class runtimeClass1 = Class.forName(className);
    3. Class runtimeClass2 = java.lang.Runtime.class;
    4. Class runtimeClass3 = ClassLoader.getSystemClassLoader().loadClass(className);

    通过以上任意一种方式就可以获取java.lang.Runtime类的Class对象了,反射调用内部类的时候需要使用$来代替.,如com.anbai.Test类有一个叫做Hello的内部类,那么调用的时候就应该将类名写成:com.anbai.Test$Hello