我正在遇到以下警告而不知道如何处理它。 正如您所看到的,我有一个[Course]类,具有通用属性[idOrName]。 当我尝试创建inseretion方法时,我得到以下几点:
No enclosing instance of type PR3 is accessible. Must qualify the
allocation with an enclosing instance of type PR3 (e.g. x.new A()
where x is an instance of PR3).
其中PR3是班级名称。
以下是代码,警告位于 set.add(新课程(名称,平均));
private static void insertCoursesToSet(Set<Course> set, int n, int it) {
Scanner s = new Scanner(System.in);
if(it==1)
for(int i=0 ; i<n ; i++){
System.out.println("Please enter name:");
s.nextLine(); //clear buffer
String name = s.nextLine();
System.out.println("Please enter avg:");
float avg = s.nextFloat();
set.add(new Course<String>(name,avg));
}
else
for(int i=0 ; i<n ; i++){
System.out.println("Please enter id:");
Integer id = s.nextInt();
System.out.println("Please enter avg:");
float avg = s.nextFloat();
set.add(new Course<Integer>(id,avg));
}
}
public class Course<E>{
private E idOrName;
private float avg;
public Course(E idOrName, float avg){
this.idOrName = idOrName;
this.avg = avg;
}
}
答案 0 :(得分:2)
之所以发生这种情况,是因为您在[{1}}中创建了内部类Course
,而PR3
方法是insertCoursesToSet
。
如果您有兴趣将其作为内部类,请将其设为static
:
static
或强>
让public static class Course<E>{
private E idOrName;
private float avg;
public Course(E idOrName, float avg){
this.idOrName = idOrName;
this.avg = avg;
}
}
非静态,你可以写:
insertCoursesToSet