1

我想用java开发一个类。问题是构造函数不起作用

课程是这样的:

public class EnumSetPlus<E extends Enum<E>> { 

//Map
private EnumSet<E> map;

//Constructor
public EnumSetPlus(){

}

我想初始化地图,EnumSet.noneOf(E.class)但构造函数给出了错误。

构造函数错了吗?我可以在没有构造函数的情况下初始化变量映射吗?

public EnumSetPlus<<E extends Enum<E>>> = EnumSet.noneOf(E)在变量上下文中尝试过,但它不起作用。

我也尝试map = EnumSet.noneOf(E.class)过构造函数,但它都不起作用。

我认为这是语法或方法的问题

你可以帮帮我吗?

预先感谢!

4

1 回答 1

4

问题是您需要一个仅使用orE无法完成的类实例。尝试提供 a作为构造函数参数,以便告诉类它被参数化为哪个枚举类。EE.classClass<E>

这应该有效:

public EnumSetPlus(Class<E> clazz){
  map = EnumSet.noneOf(clazz);
}

问题是编译器不知道 E 实际上是什么类型(它是哪个枚举),因此它无法在编译时解析该类。您需要在运行时提供该信息,或者使用建议的参数,或者通过子类EnumSetPlus化以及可以使用反射确定的具体类型参数。由于在这种简单的情况下反射方法会过大,我建议尝试使用参数方法。

于 2011-09-06T09:25:11.883 回答