小编Ada*_*čík的帖子

无法将通用Java类的类分配给Class类型由泛型超类型限制的变量

我使用Java 8.在我的设计中,有一些简单的类可以模拟值参数,例如FloatParameter或EnumParameter<E>.A具有这些classes(GenericParameter<T>)的通用超类,它实现了参数名称及其默认值.子类实现了特定于它们的其他属性,例如范围FloatParameter.

此外,我想处理参数的类型,无论其具体类型如何.但是我仍然希望以它们是子类型的方式绑定类型GenericParameter<T>.为了做到这一点,我创建了一个方法,如process(Class<? extends GenericParameter<?>> paramType).

现在的问题是,EnumParameter.class 不能被分配给类型的变量Class<? extends GenericParameter<?>>,而FloatParameter.class 可以是.

此外,我列出了类的代码,使其更清晰,可重复:

public class GenericParameter<T> {
    protected String name;
    protected T defaultValue;
}

public class FloatGenericParameter extends GenericParameter<Float> {
    ...
}

public class TypedGenericParameter<T> extends GenericParameter<T> {
    ...
}

Class<? extends GenericParameter<?>> fgpc = FloatGenericParameter.class; // ok
Class<? extends GenericParameter<?>> tgpc = TypedGenericParameter.class; // error: incompatible types: Class<TypedGenericParameter> cannot be converted to …
Run Code Online (Sandbox Code Playgroud)

java generics wildcard upperbound

6
推荐指数
1
解决办法
826
查看次数

标签 统计

generics ×1

java ×1

upperbound ×1

wildcard ×1