什么用于反射?

What are uses for reflection? (e.g the Java Reflection API)

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is reflection, and why is it useful?

所以我最近一直在搞反射API,在这里和那里乱搞似乎很酷,但是它到底有什么用途呢?

您可以看到,获取字段/方法名称和返回类型以及设置可访问性和诸如此类是很有趣的,但是如果您可以用自己的眼睛读取Java文件/类,那么这个[反射]怎么可能有用?

也许我真的很无知,或者我不理解这个思考的完整概念,但是你能向我解释一下这有什么帮助吗?


有时您希望有一个可以处理任何数据类型而不必读取类文件的库。

例如,序列化、数据库连接框架、依赖注入框架、使用注释的框架。


反射与泛型一起使用。这样,一段代码可以处理多种类型的对象。

当您不必访问Java文件,但希望了解有关它的特定内容时,通常使用它,通常是在故障排除工作中。


我使用它从一个我无权更改的对象生成键和值。

所以,如果您有一个大型代码库,并且一个团队"拥有"了一个您需要使用的类,但是它确实是一成不变的。也就是说,没有进一步的更改,您真正需要将其转换为您自己的格式,而不是手动执行,这很麻烦,所以您可以做的是获取字段名及其值,并根据您的规则将其放入您自己的对象中。