如何 运行 private class method.in same class

How to Run private class method.in same class

可以理解为什么它不允许我 运行 displaymainMethod 因为它是私有的,即使我知道我可以从同一个 class 运行 它。有没有办法不使用反射 API 来做到这一点?

这是错误

Error:(10, 9) java: cannot find symbol
  symbol:   class displayMainMenu
  location: class LoginPrototype

代码

import java.util.*;

public class LoginPrototype {

    public static void main(String[] args) {

        ArrayList<Credentials> allUsers = new ArrayList<Credentials>();
        displayMainMenu mainMenu = new displayMenu();
    }

    private void displayMainMenu() {
        int input;
        do {
            System.out.println("Menu Options");
            System.out.println("[1] Login");
            System.out.println("[2] Register");
            System.out.println("[0] Quit");//5 Displaying Main Menu Options
            Scanner sc = new Scanner(System.in);
            input = sc.nextInt();

            if (input > 2) {
                System.out.println("Please enter a value of [0] - [2]");
            }
            else if (input == 1){
                System.out.println("Login");
            }
            else if (input == 2){
                System.out.println("Register");
            }
            else if (input == 0){
                System.out.println("Thank you. bye.");
            }
        }while(input >= 2);
    }
}
 displayMainMenu mainMenu = new displayMenu();

这一行没有意义。您正在将函数视为对象。 您应该只调用函数本身:displayMainMenu();

但是使函数public.

这里有几个问题。

第一个问题是你调用的范围。在 main 方法中,您尝试调用需要对象引用的方法。 Main 是静态的,displayMainMenu 不是。因此,为了调用它,您需要实例化封装 class.

的引用

下一个问题是方法调用。 displayMainMenu() 是一种方法,而不是一种类型。所以 new 关键字在这里不适用。

下一个问题是方法的 return 类型。 displayMainMenu() 有一个 return 类型的 void。无法将 Void 分配给变量。

尝试改成:

import java.util.*;

public class LoginPrototype {

public static void main(String[] args) {

    ArrayList<Credentials> allUsers = new ArrayList<Credentials>();
    LoginPrototype lp = new LoginPrototype();
    lp.displayMenu();
}

private void displayMainMenu() {
    //Do stuff
}
}

这解决了代码的主要问题。