如何 运行 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
}
}
这解决了代码的主要问题。
可以理解为什么它不允许我 运行 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
}
}
这解决了代码的主要问题。