2

特定のタイプのオブジェクトを 1 ~ 100 個含むコレクションがあります。これらのオブジェクトには 100 を超える属性があります。コレクション内のすべてのオブジェクトを走査し、特定の属性をチェックしてそれらを操作する必要があります。実際のメソッドはプロパティ ファイルに依存するため、どのメソッドを呼び出す必要があるかを事前に知ることはできません。私はこのようにリフレクションでそれを行いました:

for (MyObject mo : myObjectList){

    for (PropertyDescriptor propertyDescriptor : Introspector
                        .getBeanInfo(mo.getClass())
                        .getPropertyDescriptors()) {

        method = propertyDescriptor.getWriteMethod();

        if (method != null){
            //Here I check if the attribute is in the properties file and do the job
        }

    }
}

これは、複数のアプリケーションによって呼び出される Web サービスに実装されており、理論的には負荷が高くなる可能性があります。

リフレクション法はコンピュータに負荷がかかりますが、明日新しい属性がタスクによって処理された場合、コードを変更せずにタスクを実行できることがわかった唯一の方法です。

リフレクションの最も高価な部分はメソッドを呼び出すよりもメソッドを探していることを読んだ(ソースを覚えていない)ので、ループを逆にすることを考えていました(つまり、メソッドを探してからリフレクションによってメソッドを呼び出します)オブジェクトごと) は、パフォーマンスに関する変更です。このようなもの:

for (PropertyDescriptor propertyDescriptor : Introspector
                        .getBeanInfo(MyObject.getClass())
                        .getPropertyDescriptors()) {

    if (method != null){
       for (MyObject mo : myObjectList){
         //Do the job here
       }
    }

}

ループを逆にする根拠はありますか?

4

1 に答える 1