作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经定义了一个名为 IReport
的通用接口(interface),它采用通用参数类型 T
public interface IReport<T> {
public enum ReportType {
YEARLY, MONTHLY, WEEKLY
}
public String getName();
public ReportType getType();
public Map<T, List<Cost>> getResults();
}
一个类正在实现这个接口(interface)
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
类本身中定义的枚举类型,它是 天数
。因为这个 eclipse 是给编译器错误说
Days cannot be resolved to a type
如果我使用任何其他枚举进行泛型替换(在此类之外定义),那么编译器错误就会消失。请帮我解决这个问题。
最佳答案
你有一个编译器错误,因为当外部类调用 WeeklyReport#getResults()
时它期望得到 Map<Days, List<Cost>>
类型的结果和 Days
外部类的类型将是未知的。
无需创建嵌套枚举 static
,因为嵌套枚举隐式为 static
.只需重构类定义和 getResults()
方法:
public class WeeklyReports implements IReport<WeeklyReports.Days> {
..
public Map<WeeklyReport.Days, List<Cost>> getResults() {
...
}
..
}
关于Java - 编译器错误 - 类中定义的枚举不能用于同一类中的泛型替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22010976/
我是一名优秀的程序员,十分优秀!