gpt4 book ai didi

java - 在 Java 8 中将不同的方法作为参数传递

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

我一直在研究 lambda 表达式以及如何在 java 8 中将方法作为参数传递,但我不确定在我的情况下是否可行:

我有多个具有相似方法的类,但某些类中的方法名称不同。每个方法都采用 Long 作为表示 ID 的参数。所以,我正在尝试:

void setScore(List<Long> nodes, method){
for (Long id : nodes)
System.out.println( method(id) );
}
}

这是我想传递的两个方法示例,但我有:

Double DegreeScorer<Long>.getVertexScore(Long id)
Double BetweennessCentrality<Long, Long>.getVertexRankScore(Long id)

我以为我找到了使用 LongConsumer 接口(interface)的解决方案,但是 LongConsumer 没有返回任何值,所以我无法存储结果。

如有任何帮助,我们将不胜感激。

更新:我最终得到了:

<T> void setScore(List<Long> nodes, LongFunction<T> getScore){
for (Long id : nodes)
System.out.println(getScore.apply(id));
}
}

setScore(nodes, ranker::setVertexScore);

最佳答案

如果您的所有方法都返回一个 Double使用java.util.Function<Long,Double> :

void setScore(List<Long> nodes, Function<Long,Double> fn) {
for (Long id : nodes)
System.out.println(fn.apply(id));
}
}

如果你有不同的返回类型,添加一个泛型类型参数

<T> void setScore(List<Long> nodes, Function<Long,T> fn) {
for (Long id : nodes)
System.out.println(fn.apply(id));
}
}

关于java - 在 Java 8 中将不同的方法作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37946168/

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