リフレクションを使用して値を読み込んだ200個のフィールドを持つクラスが与えられました。それは私が反射点であると仮定し、これはフィールドのように扱いにくい量のために非常によく動作します。このリフレクションを使用せずにフィールドの値を取得する方法
for (Field f : this.getClass().getFields())
{
try
{
Object o = f.get(this);
if (f.getType() == String.class)
{
//do things with the string
}
}
catch (Exception ex)
{
logger.error("Cannot get value for field. {}", ex.getMessage());
}
}
のように、基本的に見えます。私はそれが遅いので、それをリファクタリングするように求められました(それはありますか?)。
これまでの唯一の方法は、ハードなコーディングの不敬な点を思いついた唯一の方法ですが、別の簡単な方法がありますか?
OPに作業コードがあり、リファクタを要求するため、この質問を議論の対象外としています。 [ask]を見て、[codereview.se]でこの質問をすることを検討してください。 – xenteros
より良い、クラス全体を入れてください。 "遅い" - それはクラスの使用法と内容に依存します。個人的には、同じロジックを保存したい場合は、ここの反映が最良の解決策だと思います。これは抽象化の失敗(1つのクラスの中の200個のフィールドが混乱して処理され、!複数回フィルタリングされる必要がある)のように見えますが、深刻な実現の欠陥ではありません。 – Les
それは遅いですか?教えてください。プロファイラをプログラムに配置し、このループで費やす時間を確認します。 –