您可以扩展 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()
方法?
...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());
我正在使用 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()
方法?
...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());