从 main 方法调用方法
Calling a method from main method
当我直接从 main 方法调用方法时,这是不允许的。但是,当我从 class 的构造函数中调用相同的方法时,它是允许的。
允许的版本;
public class App {
Integer firstVariable;
Integer secondVariable;
public static void main(String[] args) {
App obj = new App(3, 2);
}
public App(Integer firstVariable, Integer secondVariable) {
this.firstVariable = firstVariable;
this.secondVariable = secondVariable;
this.calculate(firstVariable, secondVariable);
}
public int calculate(int a, int b) {
int result = a + b;
return result;
}
}
不允许的版本;
public class App {
Integer firstVariable;
Integer secondVariable;
public static void main(String[] args) {
App obj = new App(3, 2);
obj.calculate(firstVariable, secondVariable);
}
public App(Integer firstVariable, Integer secondVariable) {
this.firstVariable = firstVariable;
this.secondVariable = secondVariable;
}
public int calculate(int a, int b) {
int result = a + b;
return result;
}
}
我知道这是 "Cannot make a static reference to the non-static field firstVariable" 错误。我的问题是;在这两个代码块中,完成了同样的事情,但它们之间有什么区别?
问题不是你的方法。问题是您的变量(您尝试传递的参数)是从静态上下文中引用的。
当我直接从 main 方法调用方法时,这是不允许的。但是,当我从 class 的构造函数中调用相同的方法时,它是允许的。
允许的版本;
public class App {
Integer firstVariable;
Integer secondVariable;
public static void main(String[] args) {
App obj = new App(3, 2);
}
public App(Integer firstVariable, Integer secondVariable) {
this.firstVariable = firstVariable;
this.secondVariable = secondVariable;
this.calculate(firstVariable, secondVariable);
}
public int calculate(int a, int b) {
int result = a + b;
return result;
}
}
不允许的版本;
public class App {
Integer firstVariable;
Integer secondVariable;
public static void main(String[] args) {
App obj = new App(3, 2);
obj.calculate(firstVariable, secondVariable);
}
public App(Integer firstVariable, Integer secondVariable) {
this.firstVariable = firstVariable;
this.secondVariable = secondVariable;
}
public int calculate(int a, int b) {
int result = a + b;
return result;
}
}
我知道这是 "Cannot make a static reference to the non-static field firstVariable" 错误。我的问题是;在这两个代码块中,完成了同样的事情,但它们之间有什么区别?
问题不是你的方法。问题是您的变量(您尝试传递的参数)是从静态上下文中引用的。