我有以下的类
这让我出现了错误,无法在此(图书对象)上使用“apply”操作。 我当前的格式化程序是:
我不想让Lambda函数变成这种类型:
class Book implement Borrowable {
@Override
public String toString(Function<? extends Borrowable
, String> format) {
return format.apply(this);
}
}
这让我出现了错误,无法在此(图书对象)上使用“apply”操作。 我当前的格式化程序是:
Function<Book, String> REGULAR_FORMAT = book -> "name='" + book.name + '\'' +
", author='" + book.author + '\'' +
", year=" + book.year;
我不想让Lambda函数变成这种类型:
Function<Borrowable, String>
如果我失去了Borrowable未公开的Book成员访问权限。
String toString(Function<? extends Borrowable, String> format);
方法的问题在于,您可以使用类型为Function<Movie, String>
的对象来提供参数,其中Movie
是Borrowable
的子类。在这种情况下,调用函数上的format.apply(this)
是不安全的,因为this
是一本Book
,而不是一部Movie
。? super Book
表示函数可以具有类型为Book
或Book
的超类(这里是Borrowable<Book>
和Object
)的参数。因此,调用format.apply(this)
是安全的,因为this
是一本Book
,它是Borrowable<Book>
,也是Object
。 - undefined