# Why is InternalCardinality a final class?

**URL:** <https://discuss.elastic.co/t/why-is-internalcardinality-a-final-class/114144>\
**Category:** Elasticsearch\
**Created:** [January 4, 2018, 6:25pm UTC](https://discuss.elastic.co/t/why-is-internalcardinality-a-final-class/114144 "2018-01-04T18:25:50Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![reeselevine](https://avatars.discourse-cdn.com/v4/letter/r/da6949/32.png) [@reeselevine](https://discuss.elastic.co/u/reeselevine)\
**Post date:** [January 4, 2018, 6:25pm UTC](https://discuss.elastic.co/t/why-is-internalcardinality-a-final-class/114144/1 "2018-01-04T18:25:50Z")

</div>

I'm wondering if there's a good reason why the InternalCardinality class in the Elasticsearch java client is final, as it makes it hard to mock it for testing purposes. Especially since many of the other internal aggregations are not final classes (for example, [https://github.com/elastic/elasticsearch/blob/master/core/src/main/java/org/elasticsearch/search/aggregations/metrics/valuecount/InternalValueCount.java](https://github.com/elastic/elasticsearch/blob/master/core/src/main/java/org/elasticsearch/search/aggregations/metrics/valuecount/InternalValueCount.java)).

Thanks!

---

<div class="post-metadata">

**Author:** ![s1monw](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/s1monw/32/3637_2.png) [@s1monw](https://discuss.elastic.co/u/s1monw)\
**Post date:** [January 12, 2018, 9:10am UTC](https://discuss.elastic.co/t/why-is-internalcardinality-a-final-class/114144/2 "2018-01-12T09:10:59Z")

</div>

it is not intended to be subclassed and most of the other Internal\* classes might be marked final in the future.

---

<div class="post-metadata">

**Author:** ![reeselevine](https://avatars.discourse-cdn.com/v4/letter/r/da6949/32.png) [@reeselevine](https://discuss.elastic.co/u/reeselevine)\
**Post date:** [January 12, 2018, 6:36pm UTC](https://discuss.elastic.co/t/why-is-internalcardinality-a-final-class/114144/3 "2018-01-12T18:36:24Z")

</div>

Alright, thanks for letting me know!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [February 9, 2018, 6:36pm UTC](https://discuss.elastic.co/t/why-is-internalcardinality-a-final-class/114144/4 "2018-02-09T18:36:49Z")

</div>

Closed on February 9, 2018, 6:36pm UTC

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
