gpt4 book ai didi

Java 8 : Lambda Function and Generic Wildcards

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:41:40 25 4
gpt4 key购买 nike

我有以下类(class)

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 成员。

最佳答案

Function<? extends Borrowable, String> type 表示能够接受扩展 Borrowablesome 类型的函数.这并不意味着它接受 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界面有效。

关于Java 8 : Lambda Function and Generic Wildcards,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30818997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com