泛型和 Class.asSubclass

2024-04-03

我一直认为以下应该有效。我得到一个我知道是 a 的对象Class<X> where X延长一些课程Xyz。为了使其类型安全,我想使用 Class.asSubclass,如以下方法所示:

private Class<? extends Xyz> castToXyzClass(Object o) {
    final Class<?> resultClass = (Class<?>) o;
    final Class<? extends Xyz> result = Xyz.class.asSubclass(resultClass);
    return result;
}

然而,在 Eclipse 中它不起作用,我看到的唯一解决方案是未经检查的强制转换。我敢打赌上面的代码一定可以工作,我已经使用过类似的东西......不知道这里出了什么问题。


asSubclass()对它所调用的对象进行操作,而不是对其参数进行操作 - 这不是人们所习惯的,但它读起来很好。你只需要这样做:

final Class<? extends Xyz> result = resultClass.asSubclass(Xyz.class);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

泛型和 Class.asSubclass 的相关文章

随机推荐