我一直在解决 Project Euler 中的一些问题,并且在此过程中,我编写了许多有用的方法(用 Java 编写),我可能希望在其他 Java 项目中使用这些方法。我希望能够以从 java.lang.math 调用函数的方式调用它们,所以如果我有一个方法 primeFactor() 我可以使用MyMathMethods.primeFactor(number)
. 我该怎么办?我会制作某种可以导入的包吗?我会创建一个包含我所有有用的数学函数的超类,并让我在新项目中使用的任何类扩展它吗?可能有多种方法可以做到这一点,但我不知道什么是最好的。提前致谢。
5 回答
将您的实用程序方法标记为public static.
将包含这些实用程序方法的类打包在 jar 中。在您要使用的项目中添加/引用该 jar。然后在您的代码中,您可以以静态方式调用它们 lke :MyUtilityClass.myUtilityMethod();
对于这种情况,最好的办法是在有意义的包中工作并制作它们的 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
有关 jar 创建的更多详细信息,请参阅此
作为旁注:小心关于成员和函数在打包时的可见性
因为在我们使用它们时,使用和可访问性很重要
您可以仅使用您的 util 类创建单独的 java 项目,然后创建 jar 文件并导入任何其他项目。
对包的错误理解是包中定义的任何类对所有其他类都是可见的。根据我的经验,这不是真的。如果您有包含实用程序样式方法的类,您想在另一个类中提供?只需在您需要该方法的类中声明该类的新实例。例如... private MathUtilsClass mathUtilsClass = new MathUtilsClass(): 然后您想从此类调用的任何方法都使用新标识符,例如 mathUtilsClass.greatFunction( ); 这非常简单,应该可以解决您的问题。
只需实例化类。就像您的示例一样,如果您有一个MyMathMethods
带有该函数的primeFactor(number)
类,那么在其他类中,只需使用类似private MyMathMethods myMathMethods;
. 现在,要简单地调用该函数,myMathMethods.primeFactor(number);
您可能还需要导入它的包。