gpt4 book ai didi

java - 为什么我不能在 Java 中声明函数数组?

转载 作者:行者123 更新时间:2023-12-02 09:36:33 26 4
gpt4 key购买 nike

我习惯于像这样声明内联数组:

    String s1 = "world";
String[] strings = { "world" };

为什么我不能对函数做同样的事情?鉴于我有一个类BookgetTitle()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));
}

它不喜欢内联数组声明,编译器错误是“无法创建函数的通用数组”

编辑我认为我的问题不是建议的重复,因为我想使用数组初始值设定项语法静态定义一组函数

最佳答案

你可以试试这个:

public static void testFunction() {
Map<String, Function<Book, String>> mapToFunctions = new HashMap<>();

Function<Book, String> myFunction = x -> new String(x.getTitle());

mapToFunctions.put("firstfunction", myFunction);

for (Function<Book, String> f : mapToFunctions.values()) {
System.out.println(f.apply(new Book("my title")));
}
}

更新:

使用Set<Function<Book, String>>它会是这样的:

package com.victor.main;

import java.util.HashSet;
import java.util.Set;
import java.util.function.Function;

public class FunctionalTest {
public static void testFunction() {
Set<Function<Book, String>> mapToFunctions = new HashSet<>();

Function<Book, String> myFunction = x -> new String(x.getTitle());

mapToFunctions.add(myFunction);

for (Function<Book, String> f : mapToFunctions) {
System.out.println(f.apply(new Book("my title")));
}
}

public static void main(String[] args) {
testFunction();
}
}

关于java - 为什么我不能在 Java 中声明函数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48505048/

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