Ich stehe vor einem bizarren Problem. Im folgenden Codefragment bricht die zweite for-Schleife nach einer Iteration ab, wenn ich userRoles.removeRole (strRole) aufruft. Es gibt 2 Elemente in der Liste. Die erste for-Schleife wird zweimal ausgeführt. Aber der zweite wird nur einmal ausgeführt. Der genannte Methodenaufruf gibt Boolean zurück. Könnte mir bitte jemand helfen, was in meinem Code falsch ist?Java: for Schleife bricht vor allen Iteration wegen Methodenaufruf
if(userRoles != null)
{
List<String> roles = userRoles.getRoles();
String strUserName = userRoles.getUserName();
for(String strRole: roles)
{
System.out.println("role : " + strRole);
}
//for(String strRole: roles)
for(int count = 0; count < roles.size() ; count++)
{
String strRole = roles.get(count);
System.out.println("role before check: " + strRole);
if(ur.hasRoleForUser(strRole, strUserName))
{
System.out.println("role after check: " + strRole);
userRoles.removeRole(strRole);
}
}
System.out.println("role length: " + userRoles.getRoles().size());
if(userRoles.getRoles().size() > 0)
{
ur.addUserRoles(userRoles);
}
blnSuccess = true;
}
Bitte zeigen, was die removeRole (str) Methode tut. – Abdulgood89
Warum sollte es seltsam sein? Sie entfernen ein Element aus der aufgelisteten Liste. 2 - 1 = 1. 'getRoles' gibt offensichtlich den Verweis auf dieselbe Liste zurück.' RemoveRole' verkürzt. –
@MargaretBloom ja du hast Recht ... Ich habe es nicht richtig bemerkt ... Ich dachte es als neues Objekt, das nicht auf die Liste des Objekts verweist, aus dem das Objekt entfernt wird. Danke für Ihre Antwort. – NPException