如何在同一个类中运行私有类方法



可以理解为什么它不允许我运行displaymainMethod,因为它是私有的,即使我知道我可以从同一个类运行它。有没有办法做到这一点,而不使用反射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);
    }
}

这里有几个问题。

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

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

下一个问题是该方法的返回类型。displayMainMenu()的返回类型为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
}
}

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

 displayMainMenu mainMenu = new displayMenu();

这句话没有道理。您将函数视为对象。您应该只调用函数本身:displayMainMenu();

但要公开这个功能。

相关内容

  • 没有找到相关文章

最新更新