/JavaBasicDemo

关于Java的一些基础知识

Primary LanguageJavaMIT LicenseMIT

JavaBasicDemo

反射

  • 使用的优势:

    1. 拓展性:一个应用程序可能会用拓展性的使用,使用完整包名创建一个拓展性的对象来满足用户自定义的类。

    2. 类观察器和可视化开发环境:一个类观察器需要能够罗列出所有成员类。可视化开发环境可以从利用反射中可用的类型信息中受益,以帮助开发人员编写正确的代码。

    3. 调试器和测试工具:调试器需要能够检查类上的私有成员。测试线束可以利用反射来系统地调用可发现的集合。 在类上定义的API,以确保测试套件中的高级代码覆盖率。

  • 使用的劣势: 尽管反射十分强大,但不应乱用。如果可以在不使用反射的情况下执行操作,则优选避免使用它。 通过反射访问代码的时候,应该牢记以下问题:

    1. 性能开销:由于反射涉及动态解析的类型,因此无法执行某些Java虚拟机优化。 因此,反射操作的性能低于非反射操作,并且应避免在性能敏感应用程序中频繁调用的代码段中。

    2. 安全性限制:反射需要运行时权限,这种权限在安全管理器下运行时可能不存在。 这是一个重要的考虑因素对于必须在受限安全上下文中运行的代码,例如在Applet中。

    3. 暴露内部:由于反射允许代码执行在非反射代码中非法的操作,例如访问私有字段和方法,因此使用反射可能导致意外的副作用,这可能导致代码功能失常并可能破坏可移植性。 反射代码打破了抽象,因此可能会通过升级平台来改变行为。