2016-06-06 8 views
-1

ich folgende JDK Methode Forschung:Wie kann ich mich gegen die IllegalAccessException schützen?

java.lang.reflect.Field#get 

es wirft IllegalAccessException wenn das zugrunde liegende Feld nicht zugänglich ist.

Bin ich richtig kann ich meinen Code gegen die Ausnahme schützen, wenn ich

field.setAccessible(true); 

folgende Zeile hinzufügen wird?

Gibt es eine andere Möglichkeit, diese Ausnahme zu erhalten?

+0

Downvoters, bitte klären warum – gstackoverflow

+2

Upvoted. Ich stimme zu, dass Downvoting ohne Grund zu einer schlechten Angewohnheit bei Stackoverflow geworden ist, besonders bei den Java-bezogenen Fragen –

Antwort

1

Ja, Sie haben Recht, dass Sie Ihren Code auf diese Weise schützen kann, aber ich würde vorschlagen, dass es die folgende Art und Weise tun:

Field field = ...; 
boolean accessible = field.isAccessible(); 
field.setAccessible(true); 
//Your code 
field.setAccessible(accessible); 

das obige Verfahren verwenden nur ein bisschen von einer Sicherheit, für Beispiel: Wenn Sie mit einer API arbeiten, die davon abhängt, auf welches Feld zugegriffen werden kann oder nicht, funktioniert diese API nicht ordnungsgemäß, wenn Sie das Feld nicht auf den ursprünglichen Zustand zurücksetzen.

+0

versuche endlich deinen Freund) – gstackoverflow