#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):
Комментариев нет:
Отправить комментарий