0

関数のマップを実装したい。InsertUSER_Data()SQLite データベース ( 、InsertMessages()) などに異なるデータを挿入するための関数がいくつかあります。マップを作成し、キーコマンドで特定の機能を呼び出したいです。検索中にわかるように、これには匿名クラスとリフレクションの 2 つのアプローチがあります。(たとえば、ここHashMap に格納されたメソッドを呼び出す方法は? (Java)Map <String, Method> )インターフェイスを実装する匿名クラスを使用する代わりに、(メソッド型を介して) Reflection API に基づくアプローチが本当に好きです。

しかし、私は疑問を持っています.このソリューションでは、特にAndroidで使用する場合、またはそれほど重要ではない場合、これは本当に大きなパフォーマンスオーバーヘッドですか? 詳しい説明大変参考になります。

4

1 に答える 1

3

私はあなたの正確なポイントに答えることができませんが、いくつかの基本が役立ちます:

  • パフォーマンスを事前に知ることは微妙で、難しく、危険です。これを行う最善の方法は、2 つのソリューションの違いを測定することです (これは System.currentTimeMillis() と同じくらい簡単です)。
  • 経験則として、IO (ファイルまたはデータベースへのアクセス)、リモート呼び出し、さらには何かの UI 要素などの他のものと比較して、「メモリ内」で経過した時間は、多くの場合、パフォーマンスの点でほとんど重要ではありません。
  • (b?) 数百万回の呼び出しを行うつもりでない場合を除いて、私はそのような小さな Map が重要になるとは思えません。しかし、繰り返しますが、私を信じないでください。テストしてください。

最後に、インターフェイスを使用するだけで問題を解決できないでしょうか? これにより、この問題が解消され、多くの場合、書き込み、読み取り、およびデバッグが容易になります。何かのようなもの :

interface Actionable { Result doStuff(Param p); }

さまざまな関数クラスを実装でき、背後にあるものを正確に知らなくても後で呼び出すことができること。

于 2013-02-25T17:54:07.593 に答える