我已經給出了一個包含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有一個工作代碼,並要求重構。請查看[問]並考慮在[codereview.se]上提出這個問題。 – xenteros
更好,把整個班。 「慢」 - 這取決於班級的使用情況和內容。就我個人而言,我認爲這裏的反思是最好的解決方案......如果你想保存相同的邏輯。看起來這是一個抽象失敗(一個類中200個字段的混亂需要處理和過濾很多次),而不是一個嚴重的實現缺陷。 – Les
速度慢嗎?你告訴我。在你的程序中加入一個分析器,看看它在這個循環中花費了多少時間。 –