这就是TypeToken
“ hack”的 工作方式。它使用Class#getGenericSuperclass()
(或getGenericSuperInterface
)。它的javadoc状态
如果超类是参数化类型,则Type
返回的对象必须准确反映
public abstract class AbstractMenuOptionBuilder<O extends IClickable>
您将获得源代码中的硬编码内容。如果您将代码硬编码Link
为类型参数,请按照此处的操作
MenuOptionBuilder<Link> builder =
new MenuOptionBuilder<Link>(new MenuOptionBean()) {};
然后你会得到Link
。
在这种情况下
MenuOptionBuilder<O> builder =
new MenuOptionBuilder<O>(new MenuOptionBean()){};
您已经进行了硬编码O
,这就是您将得到的。