我习惯像这样内联声明数组:
String s1 = "world";
String[] strings = { "world" };
为什么我不能对函数做同样的事情呢?例如,我们有一个类 Book
,其中包含方法 getTitle()
和 getAuthor()
,下面的代码是合法的:
Function<Book, String> f1 = Book::getTitle;
System.out.println(f1.apply(myBook));
然而,这并不是:
Function<Book, String>[] funcs = { Book::getTitle, Book::getAuthor };
for (Function<Book, String> f2 : funcs) {
System.out.println(f2.apply(myBook));
}
它不喜欢内联数组声明,编译器错误是“无法创建Function的通用数组”
编辑 我认为我的问题与建议的重复问题不同,因为我想使用数组初始化程序语法静态定义一组函数
Map<String, Function<Book, String>> mapToFunctions = new HashMap<>();
- Victor M Perezfuncs = new Function<Book, String>[] { Book::getTitle };
。 - HéctorList<String> titles = books.stream().map(Book::getTitle).collect(Collectors.toList());
然后执行titles.stream().forEach(System.out::println);
来打印它们。创建一个相同函数的数组是多余的。 - ichantz