In general, this is something that's good to start thinking about. I think we have two kinds of interfaces/non-final classes: ones that are for implementing and ones that are for encapsulation.
For implementing: Serde, Windows, StateStore, etc. For encapsulation: KTable, Materialized, etc. To me, `Suppress` is in the latter category: since we cast it to `SuppressImpl` immediately, it's not possible to pass in any other implementations of it. The interface/impl split is purely to provide a clean division of external/internal members. The regular Java access modifiers are insufficient for this purpose, since SuppressImpl's internal members need to be accessed from other internal classes, but outside of its package. [ Full content available at: https://github.com/apache/kafka/pull/5567 ] This message was relayed via gitbox.apache.org for [email protected]
