Java - compiler error - enum defined in a class cannot be used for generic substitution in the same class
我定义了一个名为
1 2 3 4 5 6 7 8 9 10 11 12 13 | public interface IReport< T > { public enum ReportType { YEARLY, MONTHLY, WEEKLY } public String getName(); public ReportType getType(); public Map<T, List<Cost>> getResults(); } |
一个类正在实现此接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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; } } |
如果你看到这一点,在
Days cannot be resolved to a type
如果我使用任何其他枚举进行泛型替换(在此类之外定义),则编译器错误消失。 请帮我解决这个问题。
您有编译器错误,因为当外部类调用
没有必要制作嵌套的枚举
1 2 3 4 5 6 7 | public class WeeklyReports implements IReport<WeeklyReports.Days> { .. public Map<WeeklyReport.Days, List<Cost>> getResults() { ... } .. } |