dimanche 24 mai 2015

Lambda Ausdruck: Welche Methode ist die Richtige?

Hallo,

ich habe eine Frage zu Lambda-Ausdrücken. Im Buch "Java ist auch eine Insel" steht:
Java Code:

  1.  
  2. public static void main(String[] args) {
  3. String[] words = { "M", "\nSkyfall", "Q", "\t\tAdele\t" };
  4. /* FETT */
  5. Arrays.sort(words, (String s1, String s2) -> {
  6. return s1.trim().compareTo(s2.trim());
  7. });
  8. /* ende FETT */
  9. System.out.println(Arrays.toString(words));
  10. }

"Der in fett gesetzte Ausdruck nennt sich Lambda Ausdruck. Er ist eine kompakte Art und Weise, Schnittstellen mit genau einer Methode zu implementieren; die Schnittstelle Comparator hat genau eine Operation compare(...)."

Das stimmt doch nicht. java.util.Comparator hat zwei abstrakte Methoden
- compare(...)
- equals(...)

Woher weiss ich jetzt - ohne das Probieren zu müssen - , dass ich die Methode compare(...) als Lamda-Ausdruck benutzen kann die Methode equals(...) aber nicht?

Java Code:

  1.  
  2. public static void main(String[] args) {
  3. boolean gleich = false;
  4. String s1 = "Test";
  5. String s2 = "Test";
  6. gleich = (String s1, String s2) -> {
  7. s1.equals(s2);
  8. }
  9. }

Error: The target type of this expression must be a functional interface


Lambda Ausdruck: Welche Methode ist die Richtige?

0 commentaires:

Enregistrer un commentaire