【问题标题】:How to use java methods defined in another class/file如何使用在另一个类/文件中定义的 java 方法
【发布时间】:2014-03-10 11:44:45
【问题描述】:

我一直在解决 Project Euler 中的一些问题,并且在此过程中,我编写了许多有用的方法(用 Java 编写),我可能希望在其他 Java 项目中使用这些方法。我希望能够以从 java.lang.math 调用函数的方式调用它们,所以如果我有一个方法 primeFactor(),我可以使用 MyMathMethods.primeFactor(number) 调用它。我该怎么办?我会制作某种可以导入的包吗?我会创建一个包含我所有有用的数学函数的超类,并让我在新项目中使用的任何类扩展它吗?可能有多种方法可以做到这一点,但我不知道什么是最好的。提前致谢。

【问题讨论】:

  • 如果它在同一个文件夹中,您不需要导入它。如果它在不同的文件夹中,那么您必须这样做。文件在顶部的特定包中声明。例如:package java.lang; 将位于 Object 类的顶部。那么,您可以调用import java.lang.Object 来访问Object 方法和构造函数。

标签: java packages


【解决方案1】:

将您的实用方法标记为public static. 将包含这些实用方法的类打包到一个jar 中。在您要使用的项目中添加/引用该 jar。然后在您的代码中,您可以以静态方式调用它们 lke:MyUtilityClass.myUtilityMethod();

【讨论】:

    【解决方案2】:

    在这种情况下最好的办法是在有意义的包中工作并制作它们的 jar
    您可以创建一个包,如

    /* File name : Animal.java */
    package animals;
    
        interface Animal {
           public void eat();
           public void travel();
        }
    


    也在课堂上

    package animals;
    
    /* File name : MammalInt.java */
    public class MammalInt implements Animal{
    
       public void eat(){
          System.out.println("Mammal eats");
       }
    
       public void travel(){
          System.out.println("Mammal travels");
       } 
    
       public int noOfLegs(){
          return 0;
       }
    
       public static void main(String args[]){
          MammalInt m = new MammalInt();
          m.eat();
          m.travel();
       }
    } 
    

    您可以像
    import animals.*; 或更具体的 import animals.MammalInt; 一样导入它们

    现在您可以制作 jar 文件,将其导入您的项目并使用它的方法
    您可以通过此命令轻松做到这一点
    jar cmf MyJar.jar Manifest.txt MyPackage/*.class
    For more details about jar creation please see this
    附带说明:在打包时注意成员和函数的可见性
    因为在我们使用它们时,使用和可访问性非常重要 p>

    【讨论】:

      【解决方案3】:

      您可以仅使用您的 util 类创建单独的 java 项目,然后创建 jar 文件并导入到任何其他项目中。

      【讨论】:

        【解决方案4】:

        只需实例化类。就像您的示例一样,如果您有一个类MyMathMethods 和函数primeFactor(number),那么在其他类中,只需使用private MyMathMethods myMathMethods; 之类的东西来实例化它。现在,要调用该函数,只需执行 myMathMethods.primeFactor(number); 您可能还需要导入它的包。

        【讨论】:

          【解决方案5】:

          对包的错误理解是包中定义的任何类对所有其他类都是可见的。根据我的经验,这不是真的。如果您有包含实用程序样式方法的类,您想在另一个类中提供?只需在您需要该方法的类中声明该类的新实例。就像... private MathUtilsClass mathUtilsClass = new MathUtilsClass(): 然后您想从此类调用的任何方法都使用新标识符,例如mathUtilsClass.greatFunction();这非常简单,应该可以解决您的问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-01-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多