【发布时间】:2020-09-27 18:34:14
【问题描述】:
我遇到了一个问题,我正在使用一种方法来获取用户数据并且该方法是返回一个对象。问题是每当我将输入的值分配给类构造函数时,我都会遇到一条错误消息,指出“无法从静态上下文引用非静态变量”。我知道我的方法是使用 public static [return value] 声明的,这最终导致了这个问题。不过,作为该项目的一部分,我必须将方法保持为静态。这让我以某种方式操纵类或类构造函数,但我不确定如何做到这一点。
这是类和类构造函数:
public class Project1 {
public class Student {
String name;
String ID;
float GPA;
int creditHours;
double tuitionCost;
public static Student (String name, String ID, float GPA, int creditHours, double tuitionCost) {
this.name = name;
this.ID = ID;
this.GPA = GPA;
this.creditHours = creditHours;
this.tuitionCost = tuitionCost;
}
}
这就是我尝试将用户输入的数据分配给类构造函数的方式。
Student ret = new Student();
ret.name = name;
ret.ID = ID;
ret.GPA = GPA;
ret.creditHours = creditHours;
ret.tuitionCost = tuitionCost;
return ret;
如果读取的值是静态的,如何将我从用户(使用 Scanner)读取的值分配给类构造函数?
注意:我是 Java 新手,所以我的一些行话可能有点离题。
【问题讨论】:
-
你不能有一个静态构造函数。根据什么要求需要静态方法?
-
在
Student之前删除static。这不适合构造函数。然后,使用所有五个参数调用该构造函数。 不可能将构造函数标记为static。 -
但是,您可以使用调用普通构造函数的静态工厂方法。
-
你的
Student类应该是静态的。或者,更好的是,删除Project1类的声明,这是没有意义的。