2016-04-15 14 views
2

Ich erstelle eine Anwendung für einen Client und ich bin in der Situation, wo ich die Fähigkeit haben muss, einen Feldwert über eine Zeichenfolge zu referenzieren, dh die Benutzer verwenden eine Zeichenfolge, um zu definieren, in welchem ​​Feld sie den Wert ändern möchten. das ist Teil eines abstrakten Rahmens, daher kenne ich technisch nicht den Namen der Felder, die sie ändern wollen. Natürlich könnte ich dies mit Hash-Maps tun, aber ich überlege mir, Java-Reflektionen zu verwenden, da dies den Feldern erlaubt, als Felder des Objekts zu bleiben, anstatt die Werte in einer Hash-Map zu kodieren. Ich habe die Reflexion für meine eigene persönliche Arbeit verwendet, aber ich habe mich gefragt, ob die Verwendung von Java-Reflektion tatsächlich eine schlechte Übung ist, und ich sollte mich an die hashmap-Methodik halten.Verwendet Java Reflection Bad Practice?

(Alle anderen Vorschläge zur Lösung des Designproblem beschrieben werden auch geschätzt)

Dank

+1

Ich formuliere deine Frage: "Ist es eine schlechte Übung, Objekte zu manipulieren, damit sie nicht so funktionieren, wie sie es wollten?" Ich kann dir antworten. –

+0

erm nein, es ist etwas anders, weil die Anwendung tatsächlich auf die Einstellung der Werte des Objekts basiert, die geändert werden sollen. Das Problem ist, dass sie über ihren String-Namen referenziert werden müssen –

+0

Reflection ist sehr langsam, also ist es nicht eine gute Sache zu verwenden. Außerdem gibt es ja Variablen, die geändert werden können, aber was passiert, wenn Sie einen Wert der Variable in etwas Unerwartetes ändern? –

Antwort

8

Die Frage selbst ist Meinung basiert, obwohl ich die meisten glauben, werden mir zustimmen, dass man nicht einfach sagen: „Reflexion Schlecht". Manchmal ist es der einzige Weg, weshalb viele Bibliotheken Reflexion verwenden. Manchmal ist es nicht der einzige Weg, aber ein Workaround wäre noch schlimmer. Manchmal ist es nicht der einzige Weg und nicht der einfachste Weg, aber der Entwickler ist viel zu erstaunt über die Kraft der Reflexion, um klar zu denken.

Mit Ausnahme der letzten gibt es viele gute Gründe, die Reflexion als Lösung zu betrachten.