【问题标题】:How To Properly Import Methods如何正确导入方法
【发布时间】:2023-03-14 15:54:01
【问题描述】:

我目前正在研究如何将其他类从 Java 中的某个包导入到另一个包和那个特定类。

我想知道如何将 Java 中某个类的方法导入另一个类,因为我显然无法“扩展”该类来获取该方法,因为它位于其他包中。

例子:

package Responses;

public class Hello {

    public static void sayHello() {
        System.out.print("HELLO!");
    }
}

问题:

如何从 Responses 包中的 Hello 类中导入 sayHello

package Start;

public class Begin {

    public static void main(String[] args) {
        sayHello();
    }
}

我没有像上面所说的那样扩展任何类,所以请不要这样建议。

【问题讨论】:

    标签: java methods import


    【解决方案1】:

    导入函数所在的类:

    import Responses.Hello;

    然后就可以调用函数了:Hello.sayHello();

    在 Java 中没有直接导入方法的构造,但您可以导入它所在的类。

    【讨论】:

    • 谢谢!我到了导入部分,但方法部分我从来不知道你可以通过让一个类和一个方法彼此相邻来做到这一点。我猜你每天都会学到一些新东西。
    • 只有静态方法才能导入。
    • 没错,static 方法可以被导入。非static 不能。好点子。
    【解决方案2】:
    import static Responses.Hello.sayHello;
    

    然后在你的其他班级你可以这样做:

    sayHello();
    

    注意:您可以导入静态的方法。

    【讨论】:

      【解决方案3】:

      您可以导入整个类 (A) 或它们的静态成员 (B)。

      答:

       import responses.Hello;
       public class Begin {
           String myString = Hello.sayHello();
       }
      

      乙:

       import static responses.Hello.sayHello; // To import all static members use responses.Hello.*;
      public class Begin {
           String myString = sayHello();
      }
      

      oracle 对静态导入的使用有何评论:

      那么什么时候应该使用静态导入呢?非常节俭!仅当您想要声明常量的本地副本或滥用继承(常量接口反模式)时才使用它。换句话说,当您需要频繁访问一两个类的静态成员时使用它。如果你过度使用静态导入特性,它会使你的程序不可读和不可维护,你导入的所有静态成员都会污染它的命名空间。您的代码的读者(包括您,在您编写代码几个月后)将不知道静态成员来自哪个类。从一个类中导入所有的静态成员对可读性尤其有害;如果您只需要一两个成员,请单独导入它们。使用得当,静态导入可以通过删除类名重复的样板来使您的程序更具可读性。

      找到整件事here

      PS

      请为您的包使用命名约定:

      包名全部小写,避免与类名或接口名冲突。

      来自here

      【讨论】:

        【解决方案4】:

        一种方法是让你的 sayHello() 方法公开静态。喜欢

        public class Hello {
            public static void sayHello() {
                System.out.print("HELLO!");
            }
        }
        

        然后在您的 Begin 类中,您可以使用 Hello 调用 sayHello。当然,如果不在同一个包下,你应该先导入那个 Hello 类。

         public static void main(String[] args) {
            Hello.sayHello();
         }
        

        【讨论】:

          猜你喜欢
          • 2023-03-14
          • 1970-01-01
          • 2018-07-03
          • 2017-04-12
          • 2016-10-27
          • 2019-09-04
          • 2016-01-11
          • 2019-09-14
          • 1970-01-01
          相关资源
          最近更新 更多