// Interface that defines that item has calories and may be compared by it
interface Calorie extends Comparable<Calorie> {
public int compareTo(Calorie object);
public int getCalories();
}
// Examples of classes CaloryGrader is supposed to work with
class Drink implements Calorie {
// Some implemenation...
}
class Bakery implements Calorie {
// Some implementation...
}
class Cake extends Bakery {
// Some implementation...
}
## Given CaloryGrader class where I need to implement sorted static "grade" method ##
class CaloryGrader {
/**
* Returns sorted in ascending order copy of items list.
*
* Sort order is defined by item calories.
*
* @param items collection of items to sort
* @return sorted copy
*/
public List grade(List items) {
// Add implementation
}
}
任务是-通过泛型编写成绩,以便仅对包括卡路里及其子类的项目列表进行排序。
我已经写了以下评分方法的签名
public static <T extends Calorie> List<T> grade(List<T> items) {
仍然,它不起作用,我不知道为什么。
T 是一种方法可以接受的项目类型 列表是方法的返回类型
我假设参数 List 将限制只能通过卡路里的所有子类传递给方法的List。但这是不正确的。
我可以创建原始类型的列表并将其传递给该方法。我认为这是由于它可以转换为List并且适合。
解决方案应该是不将原始类型传递给方法并接收编译时错误。我想我想念什么。
答案 0 :(得分:0)
您可以将数组用于此硬约束:等级(T []个项目)
最重要的是,一个数组支持的List用于来回快速转换。