java - 当我在 Android 应用程序中使用 Reflection api 时,性能会受到很大影响吗?

标签 java android reflection methods

我想实现一个功能图。我有几个函数用于在 SQLite 数据库中插入不同的数据( InsertUSER_Data()InsertMessages() )等等。我想创建一个 map 并通过键盘命令调用特定功能。正如我在搜索过程中看到的,有两种方法:匿名类和反射。 (例如这里 How to call a method stored in a HashMap? (Java) )我真的很喜欢基于反射 API 的方法(通过方法类型): Map <String, Method>而不是仅仅使用实现接口(interface)的匿名类。

但我有疑问:这个解决方案中的性能开销是否真的很大,特别是如果我将在 Android 中使用它,或者它并不真正重要?详细的解释将会非常有帮助。

最佳答案

我无法回答您的确切观点,但一些基础知识可能会有所帮助:

  • 提前了解表演的艺术是微妙、困难和危险的。最好的方法是测量两个解决方案之间的差异(可以像 System.currentTimeMillis() 一样简单)。
  • 根据经验,与 IO(文件或数据库访问)、远程调用甚至某些 UI 元素等其他事物相比,“内存中”流逝的时间通常对性能而言并不重要。
  • 除非您打算进行(b?)数百万次调用,否则我真诚地怀疑诸如小 map 之类的结果是否会产生影响。但再次强调,不相信我,测试一下。

最后,您的问题是不是仅仅通过接口(interface)就可以解决呢?这将消除这个问题,并且通常更容易编写、阅读和调试。像这样的东西:

interface Actionable { Result doStuff(Param p); }

您的各种函数类可以实现,并且可以在之后调用而无需确切知道后面的内容。

关于java - 当我在 Android 应用程序中使用 Reflection api 时,性能会受到很大影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15073119/

相关文章:

java - 安卓 : How to get callback from custom method?

java - 如何使用反射获取嵌套类属性的值?

c# - 使用反射获取私有(private)属性的私有(private)属性

Java:如何调用名称存储在字符串变量中的函数

java - 必须实现继承的抽象方法

java - 如何为新的 Android M 运行时权限使用 Permissionsdispatcher 库?

java - 从 IntentService 调度递归处理程序以重试 http 调用

android - 是否可以自定义VideoCastControllerActivity?

android - 拍摄照片而不保存

java - 如何建立从我的 java 程序到 sqlite3 的连接?尝试时出现包错误