You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定义兼容所有ISomething实现类的Java Class类型?

解决Class无法赋值子类Class对象的问题

原代码编译失败的核心原因是Java泛型的不变性:Class<T>属于不变类型,Class<ISomething>只能接受ISomething.class,而A.class的实际类型是Class<A>,B.class是Class<B>——这两个类型和Class<ISomething>之间没有继承关系,因此编译器会直接报错。

你需要把类型替换为Class<? extends ISomething>,这个带通配符的类型表示「所有实现或继承了ISomething的类的Class对象」,完全匹配你的需求。

修改后的合法代码如下:

// 替换原有的Class<ISomething>
Class<? extends ISomething> klass;
klass = A.class;
klass = B.class;
// 额外说明:这行也合法,因为ISomething本身也符合? extends ISomething的范围
klass = ISomething.class;

内容的提问来源于stack exchange,提问作者Joe Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 02:02:20