gpt4 book ai didi

java - 在循环 Java 7 中转换泛型类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:38 29 4
gpt4 key购买 nike

我有两种不同类型的集合需要迭代,并且需要对集合对象的值之一求和。我如何使用泛型来做到这一点,即不为每种类型的 Set 编写两种求和方法?

private Double calculateFooScoreSum(final Set<Foo> fooScoreSet)
{
Double sum = 0.0;
for (final Foo score : fooScoreSet)
{
sum += score.getScore();
}
return sum;
}

private Double calculateBarScoreSum(final Set<Bar> barScoreSet)
{
Double sum = 0.0;
for (final Bar score : barScoreSet)
{
sum += score.getScore();
}
return sum;
}

如何使用泛型将上述两种方法写成一个方法。类似的东西:

private static Double calculateScoreSum(Set<?> scoreSet)
{
Double sum = 0.0;
for(Object scoreObj : scoreSet){
//Some casting magic
sum+=score.getScore();
}
return sum;
}

如果有帮助,getScore() 方法存在于类 FooBar 中。非常感谢任何想法和建议。谢谢

最佳答案

定义一个公共(public)接口(interface),比如Scorable :

public interface Scorable {
int getScore();
}

并用 Foo 实现它和 Bar :

public class Foo implements Scorable {
public int getScore () { return 1; }
}

public class Bar implements Scorable {
public int getScore () { return 2; }
}

然后,定义一个可以接受任何类型的Scorable的方法。 , 使用 wildcards :

private static Double calculateScoreSum(Set<? extends Scorable> scoreSet) {
Double sum = 0.0;
for (Scorable score : scoreSet){
sum += score.getScore();
}
return sum;
}

哪个可以接收 Set<Foo>Set<Bar>因为他们都实现了 Scorable .

关于java - 在循环 Java 7 中转换泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12452176/

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