我正在阅读 Schildt 的书 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);
}
}
是的,确实是一个错字。原文
Java The Complete Reference (Ninth Edition):