2016-06-11 11 views
0

Ich habe eine Frage, wie diese Java-Methode boolean[] hasRoles(List<String> roleIdentifiers) zu verwenden.Pass-Liste der Strings zu Java-Methode

Wie kann ich es Liste von Strings senden?

+1

Wo verwenden Sie diese Methode. Wenn in Java-Code dann Java gelernt werden sollte, wird es offensichtlich sein, wie man eine Methode mit einer Liste von Strings ausführt. –

+0

Zum Beispiel habe ich versucht, diese Liste data = null; currentUser.hasRoles (data) 'aber ich bekomme' inkompatible Typen: boolean [] kann nicht in boolean's konvertiert werden –

+0

@PeterPenzov Die Fehlermeldung, die du in einem Kommentar beschreibst, ist ein wesentlicher Teil deines Problems und verändert die Richtung der Fragen. Es gehört zu der Frage und sollte nicht in einem Kommentar angegeben werden. – Seelenvirtuose

Antwort

2

Die Methode liefert ein boolean[] kein boolean Der Fehler über beschwert, wie Sie verwenden, um das Ergebnis

List<String> data = ...; 
if (currentUser.hasRoles(data)) // will not work as a boolean[] if not a boolean 

Sie müssen das Element des boolean[]

Eine Alternative zu prüfen ist hasAllRoles zu überprüfen, welche tut Geben Sie boolean zurück, oder suchen Sie nach bestimmten Rollen, für die Sie sich interessieren.

+0

Sie haben Recht. Wie kann ich das beheben? –

1

Sie könnten eine Implementierung des List<T> Schnittstelle, zum Beispiel passieren:

1) instance.hasRoles(new ArrayList<String>()); // the empty list 
2) instance.hasRoles(Arrays.asList("s1", "s2", ...)); // the list with values 
3) instance.hasRoles(new ArrayList<String>() { // look at @Sam's comment 
     { 
      add(...); 
      ... 
     } 
    }); 

Statt List<String> data = null; Sie Ihre Liste initialisieren sollen.

Es scheint, dass Sie versuchen, so etwas wie boolean result = instance.hasRoles(...); zu tun, aber die Art, die von der Methode zurückgibt, ist anders. boolean und boolean[] sind nicht gleich.

+2

Die Methode 'Arrays.asList()' sollte gegenüber der Double-Brace-Initialisierungsmethode immer bevorzugt werden; 'new ArrayList () {{add (...); }} '* erstellt bei jeder Verwendung eine neue Klasse *. – Sam

+1

@Sam jedes Mal, wenn Sie es in Code verwenden, aber einmal für die Codezeile zur Laufzeit. –

+1

@PeterLawrey können Sie klären? Ich bin nicht klar, was du sagst. – Sam