任何时候您在运行时处理字符串,并希望将该字符串的一部分视为语言中的标识符。
- 远程过程调用-将通过网络接收的消息的一部分视为方法名称。
- 序列化和反序列化-将字段名称转换为字符串,以便您可以将对象的字段写入流,然后再将其转换回对象。
- 对象关系映射-维护对象中的字段与数据库中的列之间的关系。
- 具有动态类型的脚本语言的接口-将脚本语言产生的字符串值转换为对对象上的字段或方法的引用。
它也可以用于允许以语言模拟语言功能。考虑
javacom.example.MyClass将字符串转换为类名的命令行。这不需要反射,因为
java可执行文件可以将
.class文件转换为代码,但是如果没有反射,它将无法在其参数的委托写入
javacom.example.Wrapper com.example.MyClass位置
Wrapper,如下所示:
class Wrapper { public static void main(String... argv) throws Exception { // Do some initialization or other work. Class<?> delegate = Class.forName(argv[0]); Method main = delegate.getMethod("main", String[].class); main.apply(null, Arrays.asList(argv).subList(1, argv.length).toArray(argv)); }}


