【发布时间】:2017-09-05 02:22:29
【问题描述】:
我正在尝试使用泛型和枚举来设计一段代码。我希望使用原始整数来获取枚举,并且它必须包含一个字符串。我有很多枚举,所以我用一个接口实现了它们,以便记住覆盖公共toString()、getIndex() 和getEnum() 方法。但是,我收到了类型安全警告,知道如何摆脱它以及为什么会发生这种情况吗?
public interface EnumInf{
public String toString();
public int getIndex();
public <T> T getEnum(int index);
}
public enum ENUM_A implements EnumInf{
E_ZERO(0, "zero"),
E_ONE(1, "one"),
E_TWO(2, "two");
private int index;
private String name;
private ENUM_A(int _index, String _name){
this.index = _index;
this.name = _name;
}
public int getIndex(){
return index;
}
public String toString(){
return name;
}
// warning on the return type:
// Type safety:The return type ENUM_A for getEnum(int) from the type ENUM_A needs unchecked conversion to conform to T from the type EnumInf
public ENUM_A getEnum(int index){
return values()[index];
}
【问题讨论】:
-
仅供参考,在界面中声明
toString()是没有用的。所有Objects 都已经声明了这一点。您需要做的就是在实现类中覆盖它。