Страницы

Поиск по вопросам

среда, 1 января 2020 г.

В книге Шилдта опечатка или нет?

#java #интерфейс #java_8 #лямбда_выражение


Читаю книгу Шилдта Java 8, главу "Ссылки на статические методы".

Вопрос про класс MyStringOps - видно, что объявлен класс, а не интерфейс, но в книге
почему-то написан интерфейс. Это опечатка? Или чего-то недопонимаю?

// Продемонстрировать ссылку на статический метод
// Функциональный интерфейс для операций с символьными строками

interface StringFunc {
  String func (String n);
}
// в этом интерфейсе определяется статический метод strReverse ()
class MyStringOps {
// Статический метод, изменяющий порядок
// следования символов в строке
  static String strReverse (String str) {
    String result = " " ;
    int i;
    for (i = str.length()- 1; i >= О; i--)
      result += str.charAt (i) ;
    return result;
   }
}
class MethodRefDemo {
// В этом методе функциональный интерфейс указывается в качестве
// типа первого его параметра . Следовательно, ему может быть передан
// любой экземпляр этого интерфейса , включая и ссылку на ме тод
  static StringstringOp (StringFunc sf, String s) { 
  return sf.func(s) ;
  public static void main (String args[])
  {
    String inS tr = "Лямбда- выражения повышают эффективность Java ";
    String out Str;
    // Здесь ссылка на метод strRaverse () передается методу stringOp()
    outStr = stringOp ( MyStringOps::strReverse, inStr);
    System.out.println (" Иcxoднaя строка : "+ inStr);
    System.out.println ("Oбpaщeннaя строка : "+ outStr); 
  }
}

    


Ответы

Ответ 1



Да, действительно, опечатка. В оригинале Java The Complete Reference (Ninth Edition):

Комментариев нет:

Отправить комментарий