从静态上下文访问非静态方法

Hun*_*ves 4 java methods access-modifiers

我对此感到有点困惑,而我在这里浏览建议的答案并没有产生在我的上下文中起作用的直接结果.

我的问题是基本的.让我们假设我有一个像这样的方法.

private int someFunction(int x, int y){
    return (x+y+5)
} 
Run Code Online (Sandbox Code Playgroud)

但是我想从main调用这个函数(public static void main(String args[]) ).我该怎么做呢?

如果有一个教程,你认为在这种情况下会帮助我,我也会非常感激.

aio*_*obe 8

此函数不需要访问任何成员变量,因此您可以将该方法声明为static:

private static int someFunction(int x, int y) {
        ^^^^^^
    return (x+y+5)
} 
Run Code Online (Sandbox Code Playgroud)

这将允许您main使用someFunction(arg1, arg2)或中的任何一个来调用它YourClass.someFunction(arg1, arg2).


如果该方法实际上确实需要访问成员变量(和/或this引用),则不能将该方法声明为static.在这种情况下,您必须创建包含该方法的类的实例才能调用它:

new YourClass().someFunction(0, 1);
Run Code Online (Sandbox Code Playgroud)

或(如果以后需要重用该实例)

YourClass x = new YourClass();
x.sumFunction(0, 1);
Run Code Online (Sandbox Code Playgroud)