Java 静态引用
有人知道为什么在出现“类型”菜单时,错误无法对非静态方法FileMenu进行静态引用吗Java 静态引用,java,Java,有人知道为什么在出现“类型”菜单时,错误无法对非静态方法FileMenu进行静态引用吗 import javax.swing.JOptionPane; public class Menu { public void FileMenu() { } public void ViewMenu() { } public static void main(String[] args) { String[] mainbu
import javax.swing.JOptionPane;
public class Menu {
public void FileMenu() {
}
public void ViewMenu() {
}
public static void main(String[] args) {
String[] mainbuttons = { "File", "View" };
int choice = JOptionPane.showOptionDialog(null, "Please Select An Option: ","Application Menu",JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null,mainbuttons, mainbuttons[2]);
switch (choice) {
case 0:
FileMenu();
break;
case 1:
ViewMenu();
break;
}
}
}
代码中的FileMenu不是一个静态方法,而down-in-switch语句是在静态上下文中调用它的。没有对象。这里有两个选项
使FileMenu方法像publicstaticvoidfilemenu一样是静态的,然后您可以调用它,而不需要菜单类的任何对象
创建Menu类的对象并使用它调用FileMenu方法。像
菜单obj=新菜单
obj.FileMenu
这意味着您不能在静态方法中调用非静态方法,例如static void mainString[]args 要正常工作,请将方法FileMenu和ViewMenu设置为静态
public static void FileMenu() {
}
public static void ViewMenu() {
}
或
创建菜单对象并调用FileMenu和ViewMenu方法
Menu m = new Menu();
switch (choice) {
case 0:
m.FileMenu();
break;
case 1:
m.ViewMenu();
break;
}
发生这种情况的原因是您正在从静态公共静态void mainString[]参数访问非静态文件菜单{.如果将FileMenu和ViewMenu更改为static public static void…,则会起作用。您需要使FileMenu和ViewMenu成为静态函数,因为它们与Main属于同一类。静态函数只能调用其他静态函数。