【问题标题】:How to run a method in a different class file in java如何在java中的不同类文件中运行方法
【发布时间】:2020-04-01 16:15:50
【问题描述】:

所以我有两个文件,成绩簿存储我的主要方法和其他一些方法,然后是 FSCstudent,其中包含我的学生班级和其他一些东西。我想从 getter 中获取一个整数值。

public static void searchByID(int idSearch) {
    numStudents = FSCstudent.getNumStudents();
}

所以这是我尝试从中获取 int 值的尝试:

public int getNumStudents() {
    return numStudents;
}

但是,我只是不断收到错误 nonstatic method getNumStudents() cannot be referenced from a static context

【问题讨论】:

  • 这个错误意味着getNumStudents()方法应该是静态的。静态意味着程序可以在不创建类实例的情况下访问变量/方法,例如new FSCstudent().getNumStudents() 不是静态的,因为您正在创建FSCstudent 的实例,而FSCstudent.getNumStudents() 是静态的,因为您正在直接访问它无需先创建 FSCstudent 的实例。

标签: java class


【解决方案1】:

是的,就像@GauravMall 所说,您可以通过向方法添加静态修饰符来静态引用该函数。另一种选择是创建FSCStudent 的实例并以非静态方式调用该方法。

静态版本:

您还必须使用 static 修饰符将成员 numStudents 设为静态。

private static int numStudents;

public static int getNumStudents() {
    return numStudents;
}

非静态版本:

FSCStudent student = new FSCStudent();

int students = student.getNumStudents();

【讨论】:

  • 对,这实际上更好!忘了说。
  • 我的意思是,对于每个人来说,你的方式在某些情况下是完全有效的!
  • 确实,这取决于 OP 的实现,但是,在你的答案中同时包含这两者很重要 :)
  • 你是圣人。
【解决方案2】:

你只需要这样做:

public static int getNumStudents() {
    return numStudents;
}

但要小心,因为您也需要将numStudents 设置为静态。像这样:

private static int numStudents;

主函数的原因是静态函数,而静态函数无法访问非静态方法。如果您不知道什么是静态方法,请阅读以下内容:Static function in Java

编辑: 正如@Jason 还指出的那样,如果您尝试创建该FSCstudent 类的列表,则需要先创建一个对象。代码(直接来自 Jason):

FSCStudent student = new FSCStudent();

int students = student.getNumStudents();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 2017-01-29
    • 2015-05-13
    • 1970-01-01
    相关资源
    最近更新 更多