您可以扩展 IntSummaryStatistics class 吗?

You can extend the IntSummaryStatistics class?

我正在使用 Java 流统计,使用速度,这样:

IntSummaryStatistics intSummary = join.stream(). MapToInt (t> t.get0(). GetCNationkey ()). SummaryStatistics();
Long sumResult = intSummary.getSum ();

我想要一个新的class来构造一个新的getSum()方法。类似于:

IntSummaryStatisticsTest intSummarytest = join.stream (). MapToInt (t> t.get0 (). GetCNationkey ()). SummaryStatistics ();
Long sumResult = intSummarytest.getSumTest();

我尝试创建一个新的 class:

public class IntSummaryStatisticsTest extends IntSummaryStatistics {}

IntSummaryStatisticsTest summa = join.stream().mapToInt(t->t.get0().getCNationkey()).summaryStatistics();

但我收到此错误:incompatible types required java. Required: IntSummaryStatisticsTest Found: java.util.IntSummaryStatistics

是否可以实施这个新的 getSumTest() 方法?

documentation of IntStream提示:

...For example, you can compute summary statistics on a stream of ints with:

IntSummaryStatistics stats = intStream.collect(
    IntSummaryStatistics::new,
    IntSummaryStatistics::accept,
    IntSummaryStatistics::combine);

您应该可以对 IntSummaryStatisticsTest 执行相同的操作,即:

IntSummaryStatisticsTest stats = intStream.collect(
    IntSummaryStatisticsTest::new,
    IntSummaryStatisticsTest::accept,
    IntSummaryStatisticsTest::combine);

但也要考虑 Jacob 的 comment/solution(使用合成可能会更好)

就像我在评论中所说的那样,我会选择组合而不是继承。这意味着您可以创建 class、IntSummaryStatisticsTest 并接受 IntSummaryStatistics 对象作为构造函数中的参数。您的 class 将如下所示:

class IntSummaryStatisticsTest {
    private final IntSummaryStatistics statistics;

    public IntSummaryStatisticsTest(IntSummaryStatistics statistics) {
        this.statistics = statistics;
    }

    public long getSumTest() {
        // return your value
    }
}

class 的用法如下:

var summary = new IntSummaryStatisticsTest(join.stream()
        .mapToInt(t -> t.get0().getCNationkey())
        .summaryStatistics());

System.out.println(summary.getSumTest());