Java-编译器错误-类中定义的枚举不能用于同一类中的泛型替换
作者:互联网
我定义了一个名为IReport的通用接口,该接口采用通用参数类型T
public interface IReport<T> {
public enum ReportType {
YEARLY, MONTHLY, WEEKLY
}
public String getName();
public ReportType getType();
public Map<T, List<Cost>> getResults();
}
一个类正在实现此接口
public class WeeklyReport implements IReport<Days> {
public enum Days {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
@Override
public String getName() {
return "Weekly report ";
}
@Override
public ReportType getType() {
return ReportType.WEEKLY;
}
@Override
public Map<Days, List<Cost>> getResults() {
return null;
}
}
如果看到这种情况,在WeeklyReport中,T被WeeklyReport类本身定义的枚举类型(即Days)代替.对于这次蚀给编译器错误说
Days cannot be resolved to a type
如果我使用任何其他枚举进行通用替换(在此类之外定义),则编译器错误将消失.请帮我解决这个问题.
解决方法:
您遇到了一个编译器错误,因为当外部类调用WeeklyReport#getResults()时,它将期望得到Map public class WeeklyReports implements IReport<WeeklyReports.Days> {
..
public Map<WeeklyReport.Days, List<Cost>> getResults() {
...
}
..
}
标签:enums,generics,java 来源: https://codeday.me/bug/20191122/2056733.html