我有以下课程
class Book implement Borrowable {
@Override
public String toString(Function<? extends Borrowable
, String> format) {
return format.apply(this);
}
}
这给了我一个错误,我无法在此(书籍对象)上使用“应用”。
我当前的格式化程序是
Function<Book, String> REGULAR_FORMAT = book -> "name='" + book.name + '\'' +
", author='" + book.author + '\'' +
", year=" + book.year;
我不想制作该类型的 lambda 函数
Function<Borrowable, String>
因为我将无法访问未由 Borrowable 公开的 Book 成员。
The Function<? extends Borrowable, String>
type 表示能够接受的函数some延伸的类型Borrowable
。这并不意味着它接受Book
。也许最好的解决方案是引入通用参数Borrowable
:
public interface Borrowable<T> {
public String toString(Function<? super T, String> format);
}
并指定它在Book
:
public class Book implements Borrowable<Book> {
@Override
public String toString(Function<? super Book, String> format) {
return format.apply(this);
}
}
这类似于Comparable
界面有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)