我想实现一个功能图。我有几个函数用于在 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/