gpt4 book ai didi

java - 具有可变输入和一个输出的 Guava 函数

转载 作者:行者123 更新时间:2023-11-30 03:34:34 26 4
gpt4 key购买 nike

我一直在使用Guava Function接口(interface)public interface Function<F, T>虽然它对f(F)=T很有用类型计算。我遇到过很多需要计算变量参数的情况,即

f(A,B,C...)=X

现在我最近遇到了java元组库http://www.javatuples.org/它可以很好地完成最多 10 个参数的工作。然而我想要一些更通用的东西。而不是为各个类显式声明 getter 和 setter。我的问题是,是否可以声明这样的内容

public interface Function2<Class<? extends Object>...,T>

它可以对可变数量的类型参数进行操作。虽然我知道拥有一个类并使用其相应的字段是一个更好的选择,但我只是想知道这一点。

编辑

当询问此类函数的用例时,我正在撰写关于 Function Java 库(最多支持 8 个参数)的此类使用,尽管它是一个非常微不足道的用例。例如:给定 2 个字符串,如果它们相等则返回 true,否则返回 false:

 F2<String, String, Boolean> stringsEqual = new F2<String, String, Boolean>() {
@Override
public Boolean f(final String a, final String b) {
return a.equals(b);
}

最佳答案

不,您不能在泛型中使用可变参数。

但是,您可以遵循的一种可能的方法是使用包含所有函数参数的列表:

public interface Function2<T extends List<?>, U> {
public U apply(T argumentList);
}

另一种方法是在抽象方法中定义可变参数,但在泛型上下文中,它们应该是兼容的类型(因为我们不能定义无限数量的没有关系的类型参数)。例如:

public interface Function2<T, U> {
public U apply(T ... argumentList);
}

关于java - 具有可变输入和一个输出的 Guava 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28298945/

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