有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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()。我想知道是否有一种直接使用对话框的方法


共 (2) 个答案

  1. # 1 楼答案

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

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

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

    import static mypackage.Dialog.*;
    
    public class Class1 {
      public static void main(String[] args) {
        dialog("This is dialog");
      }
    }
    
  2. # 2 楼答案

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

    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
        }
    }
    

    编译器如何知道要调用哪一个方法?dialog类中的dialog方法,还是SomeOtherClass中的dialog方法

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

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

    最终,这将使代码更难阅读,而且可能会模棱两可,只是为了节省一点打字时间。记住,为了可读性,最好尽可能明确地表达你的意图