(1)假设工程目录为/Project
(2)在目录/Project/com/github/thzt/
中,新建两个文件
// A.java
package com.github.thzt;
class A {
private void a() {
System.out.println("Hello Reflection");
}
}
// Reflection.java
package com.github.thzt;
import java.lang.reflect.Method;
public class Reflection {
public static void main(String[] args) throws Exception {
Class cls = Class.forName("com.github.thzt.A");
Object instance = cls.newInstance();
Method mtd = cls.getDeclaredMethod("a");
mtd.setAccessible(true); //访问private方法
mtd.invoke(instance);
}
}
(3)在工程目录/Project
,编译
javac com/github/thzt/*.java
(4)从程序入口运行
java com.github.thzt.Reflection
(5)控制台输出结果
Hello Reflection
注:
(1)包的物理结构应该和逻辑结构一致
物理结构(目录结构):com/github/thzt/
逻辑结构(限定名):com.github.thzt
(2)入口的类名要与文件名一致
类名:Reflection
文件名:Reflection.java
(3)编译会报警
注: com/github/thzt/Reflection.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。