Java 直接从另一个类访问方法

Java 直接从另一个类访问方法,java,class,methods,Java,Class,Methods,我希望能够直接使用另一个类中的方法 import package.dialog; public class Class1 { public static void main(String[] args) { dialog.dialog("This is a dialog"); } } import javax.swing.JOptionPane public class dialog { public static void dialog(Strin

我希望能够直接使用另一个类中的方法

import package.dialog;

public class Class1 {
    public static void main(String[] args) {
        dialog.dialog("This is a dialog");
    }
}


import javax.swing.JOptionPane
public class dialog {
    public static void dialog(String message) {
        JOptionPane.showMessageDialog(null, message);
    }

}

这段代码的工作原理与预期完全相同,但正如您所看到的,我使用的是dialog.dialog()。我想知道是否有直接使用dialog()的方法?

不,这是不可能的。考虑以下情况:

import package.dialog;

public class Class1 {
    public static void main(String[] args) {
        // Omit the class and call the dialog method "directly"
        dialog("This is a dialog");
    }
}


import javax.swing.JOptionPane
public class dialog {
    public static void dialog(String message) {
        JOptionPane.showMessageDialog(null, message);
    }

}

public class SomeOtherClass {
    public static void dialog(String message) {
        // Perform some action
    }
}
编译器如何知道要调用哪一个方法?
对话框
类中的
对话框
方法,或
其他类中的
对话框
方法

编程语言通常都经过精心设计,以避免出现这种歧义

一个臭名昭著的设计不佳的例子(以及你所建议的潜在困难)是C++和其他语言的多重继承,这是一个模糊的结果,与你提出的非常相似。事实上,这是C#和Java禁止多重继承的主要原因之一。重点是这并不是你想要的语言


最终,这将使代码更难阅读,并且可能会模棱两可,只需节省一点输入。请记住,为了便于阅读,最好尽可能明确说明您的意图。

首先,您的示例无法编译,因为您无法将包命名为“package”。“package”是一个Java关键字,不允许用作标识符

所以我们称之为“我的包裹”。根据Java惯例,您应该使用大写字母命名类。因此,在下面的示例中,我将使用
Dialog
而不是
Dialog
作为类名

然后,可以使用静态导入调用方法
dialog()
,而不使用前缀

import static mypackage.Dialog.*;

public class Class1 {
  public static void main(String[] args) {
    dialog("This is dialog");
  }
}

即使dialog.dialog不应该工作,您的方法也不是静态的。但是您不能。您的
对话框
方法不是
静态
,此代码不应该工作。另外,来自
dialog
包中的
dialog
类的
dialog
方法非常容易产生误导。不,您不能直接使用
dialog()
方法。因为在没有提及或指向正确的类的情况下,编译器应该如何知道它应该调用哪个
dialog()
方法?“这段代码按照它应该调用的方式工作”-这段代码会产生编译器错误。如果这是预期的结果,那么,是的,您可以通过直接使用
dialog()
来实现相同的结果。因为java中的所有方法都必须具有类绑定。因此,您不能定义没有类的方法。你没有C++的全局方法。