【发布时间】:2015-03-31 06:29:58
【问题描述】:
这是我的代码,请不要给我作业的解决方案。谁能告诉我编译错误?以及为什么它不起作用。我以前写过这样的代码……
简单代码:
学生.java
public class Student
{
private int id;
public Student(int NewId)
{
id = NewId;
}
public int getId(){ return id; }
public void setId(int NewId){ id = NewId; }
}
排序.java
public class Sort
{
public static Comparator<Student> getStudentIdComparator()
{
return new IdComparator();//<- compile error
}
class IdComparator implements Comparator<Student>
{
@Override
public int compare(Student o1, Student o2)
{
return o1.getId() - o2.getId();
}
}
}
MainFile.java
class MainFile
{
public static void main(String[] args)
{
Student s[] = new Student[10];
// Here you would just create the instance variable with student id in the argument
Comparator<Student> studentIdComparator = Sort.getStudentIdComparator();
Arrays.sort(students, studentIdComparator);
}
}
【问题讨论】:
-
错误信息到底是什么?
-
线程“main”java.lang.Error 中的异常:未解决的编译问题:无法访问 Sorter 类型的封闭实例。必须使用 Sorter 类型的封闭实例来限定分配(例如 x.new A(),其中 x 是 Sorter 的实例)。在 Sorter.getStudentIdComparator(Sorter.java:17) 在 Tester.main(Tester.java:21)
标签: java sorting comparator