2016-08-09 3 views
2
mit validieren

Ich habe eine Klasse mit zwei String-Datenelemente:Frühling Wie zwei Datenelement Strings haben gleiche Länge @AssertTrue

public class Validate 
{ 
    @NotNull 
    private String name1; 

    @NotNull 
    private String name2; 

     // getter and setters for name1 and name2   
} 

Jetzt habe ich ein Mitglied Verfahren haben wollen, die überprüfen, ob name1 die gleiche hat Länge von name2, und lassen Sie es fehlschlagen, wenn sie nicht die gleiche Länge haben. Kann ich so etwas tun? Ich habe es getestet, aber es hat nichts versagt, wenn die Längen nicht gleich sind.

public class Validate 
{ 
    @NotNull 
    private String name1; 

    @NotNull 
    private String name2; 

     // getter and setters for name1 and name2  

     @AssertTrue(message = "Length not equal") 
     private boolean isEqual() 
     { 
      return name1.length()== name2.length(); 
     } 
} 
+1

Es sollte nicht einmal kompilieren. – chrylis

Antwort

0

Statt "Rückkehr name1.length == name2.length;" tun:

if (name1.length() == name2.length()){ 
    return true; 
} 
return false; 

Es ist ein bisschen klarer mit einer if-Anweisung, aber die .length **() ** Bit ist das einzige wichtige Bit. Ich glaube, dass .length allein für Array-Größen funktioniert, wo es sich auf eine Instanzvariable im Array-Objekt bezieht, aber es ist eine Methode für Strings.

Hinweis: Ich bin nie auf diese Anmerkungen gestoßen, aber ich denke, es sollte noch funktionieren. Auf keinen Fall ist es wahrscheinlich, ein Konflikt zwischen der "Rückkehr falsch"; und die Annotation @AssertTrue.

0

Länge ist kein Feld der Klasse String. Sie müssen die Methode length() aufrufen. Ihre Verwirrung kommt wahrscheinlich aus der Tatsache, dass die Klasse Array hat eine öffentlich sichtbare Feld mit dem Namen Länge, also zum Beispiel

int[] ints = new int[](); 
ints.length 

wird die erwartete Ausgabe hat.

Verwandte Themen