我有一个类,其中有些类型参数不是实现细节,而有些则不是。
处理类型参数(最好不使用未经检查的强制转换)不应属于公共API的最佳方法是什么?
我有一个由构建者创建的类,该构建者选择了合适的助手。就我而言,一个助手知道如何在类似缓冲区的对象之间进行批量读取/写入。
/**
* @param <T> a type parameter that end users of PublicClass cannot ignore.
* @param <X> has a specific relationship to T, but
* is an artifact of how PublicClass is implemented.
*/
public class PublicClass<T> {
// This constructor is called from a builder.
// The builder just returns
// new PublicClass<>(aHelper, someMutableState)
// <X> is inferred from the choice of parameters.
<X> PublicClass(
Helper<T, X> helper,
StatefulInternalObject<T, X> someMutableState) {
...
}
...
}
因此有一个公共类和一个公共生成器,以及一些私有的实现细节类。
我不想向客户展示<X>
,但是我的助手和有状态对象需要以依赖于<X>
的方式进行交互,并且助手会转换使用{{1}的类型}转换为使用<T>
的类型,因此使用涉及<X>
的未经检查的强制类型转换会使PublicClass的实现变得脆弱。
我可以创建另一个具有两个类型参数集的隐藏类,然后将我的公共API转发给该类:
<X>
有没有更好的方法不需要这些浅层转发方法?