2013-07-15 3 views
3

Я работал над некоторыми проблемами Project Euler и в этом процессе написал много полезных методов (на Java), которые я мог бы использовать в другие проекты Java. Я хочу иметь возможность называть их так, как вы вызываете функцию из java.lang.math, поэтому, если бы у меня был метод primeFactor(), я мог бы назвать это с помощью MyMathMethods.primeFactor(number). Как я могу это сделать? Я бы сделал какой-то пакет, который я мог бы импортировать? Я бы сделал суперкласс, который включает в себя все мои полезные математические функции и какой класс, с которым я работаю в новом проекте, расширяет его? Возможно, есть несколько способов сделать это, но я не знаю, что лучше. Заранее спасибо.Как использовать java-методы, определенные в другом классе/файле

+0

Если он находится в той же папке, вам не нужно будет его импортировать. Если он находится в другой папке, вам нужно это сделать. Файлы объявляются в определенном пакете вверху. Например: 'package java.lang;' будет в начале класса 'Object'. Итак, вы можете вызвать 'import java.lang.Object' для доступа к методам и конструкторам Object. –

ответ

0

Вы можете создать отдельный проект java только с вашими классами util, а затем создать файл jar и импортировать его в любой другой проект.

3

Отметьте ваши утилиты как public static. Пакет классов, содержащих эти методы утилиты в банке. Добавьте/см. Эту банку в свой проект, где вы хотите использовать. Затем в вашем коде вы можете называть их статическим способом lke: MyUtilityClass.myUtilityMethod();

0

Просто введите экземпляр класса. Как и ваш пример, если у вас был класс MyMathMethods с функцией primeFactor(number), то в других классах просто создайте экземпляр с чем-то вроде private MyMathMethods myMathMethods;. Теперь, чтобы вызвать функцию просто сделать myMathMethods.primeFactor(number); Возможно, вам также потребуется импортировать свой пакет.

1

Лучше всего для этой ситуации работать в значимых пакетов и сделать их банку
Вы можете создать пакет как

/* 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
В качестве примечания: Будьте осторожны о видимости членов и функции при его упаковке
Потому что использование и доступность имеют большое значение при их использовании.

0

Ложное понимание пакетов - это любой класс, определенный внутри пакета, видимый для всех других классов. Неправда из моего опыта. Если у вас есть классы, содержащие методы стиля утилит, которые вы хотите сделать доступными в другом классе? Просто объявите новый экземпляр класса в классе, в котором вам нужен метод. Как ... private MathUtilsClass mathUtilsClass = new MathUtilsClass(): Тогда любой метод, который вы хотите вызвать из этого класса, использует новый идентификатор, например. mathUtilsClass.greatFunction(); Это глупо легко и должно решить вашу проблему.