Я работал над некоторыми проблемами Project Euler и в этом процессе написал много полезных методов (на Java), которые я мог бы использовать в другие проекты Java. Я хочу иметь возможность называть их так, как вы вызываете функцию из java.lang.math, поэтому, если бы у меня был метод primeFactor(), я мог бы назвать это с помощью MyMathMethods.primeFactor(number)
. Как я могу это сделать? Я бы сделал какой-то пакет, который я мог бы импортировать? Я бы сделал суперкласс, который включает в себя все мои полезные математические функции и какой класс, с которым я работаю в новом проекте, расширяет его? Возможно, есть несколько способов сделать это, но я не знаю, что лучше. Заранее спасибо.Как использовать java-методы, определенные в другом классе/файле
ответ
Вы можете создать отдельный проект java только с вашими классами util, а затем создать файл jar и импортировать его в любой другой проект.
Отметьте ваши утилиты как public static.
Пакет классов, содержащих эти методы утилиты в банке. Добавьте/см. Эту банку в свой проект, где вы хотите использовать. Затем в вашем коде вы можете называть их статическим способом lke: MyUtilityClass.myUtilityMethod();
Просто введите экземпляр класса. Как и ваш пример, если у вас был класс MyMathMethods
с функцией primeFactor(number)
, то в других классах просто создайте экземпляр с чем-то вроде private MyMathMethods myMathMethods;
. Теперь, чтобы вызвать функцию просто сделать myMathMethods.primeFactor(number);
Возможно, вам также потребуется импортировать свой пакет.
Лучше всего для этой ситуации работать в значимых пакетов и сделать их банку
Вы можете создать пакет как
/* 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 файл, импортировать его в свой проект и использовать его метод
Вы eaisly можете сделать это с помощью этой команды jar cmf MyJar.jar Manifest.txt MyPackage/*.class
For more details about jar creation please see this
В качестве примечания: Будьте осторожны о видимости членов и функции при его упаковке
Потому что использование и доступность имеют большое значение при их использовании.
Ложное понимание пакетов - это любой класс, определенный внутри пакета, видимый для всех других классов. Неправда из моего опыта. Если у вас есть классы, содержащие методы стиля утилит, которые вы хотите сделать доступными в другом классе? Просто объявите новый экземпляр класса в классе, в котором вам нужен метод. Как ... private MathUtilsClass mathUtilsClass = new MathUtilsClass(): Тогда любой метод, который вы хотите вызвать из этого класса, использует новый идентификатор, например. mathUtilsClass.greatFunction(); Это глупо легко и должно решить вашу проблему.
Если он находится в той же папке, вам не нужно будет его импортировать. Если он находится в другой папке, вам нужно это сделать. Файлы объявляются в определенном пакете вверху. Например: 'package java.lang;' будет в начале класса 'Object'. Итак, вы можете вызвать 'import java.lang.Object' для доступа к методам и конструкторам Object. –