Импорт из другого пакета Java

457
31 августа 2017, 18:41

Понимаю, что вопрос скорее глупый. Нужно создать два класса в разных пакетах и импортировать метод из одного класса в другой. Вопрос, как правильно создать эти два класса в idea? Я создал два проекта, в каждом класс в своём пакете, в idea иимпртировать один в другой и запустить получается, но командной строкой не выходит. Потом создал один проект и в нем два класса в разных пакетах и вроде структура каталогов выглядит логичнее, но собрать каждый класс в .jar не получается. Какой из способов верен?

Answer 1

В Java можно импортировать только статические методы. Привожу простой пример того, как это делается. Класс из первого пакета:

package package1;
public class ClassOne {
    public static void sayHello() {
        System.out.println("Hello, world");
    }
}

Класс из второго пакета:

package package2;
import static package1.ClassOne.sayHello;
public class ClassTwo {
    public static void main(String[] args) {
        sayHello();
    }
}

При выполнении метода main класса ClassTwo в консоль будет выведен результат метода sayHello() класса ClassOne.

Answer 2

Я создал два проекта, в каждом класс в своём пакете, в idea иимпртировать один в другой и запустить получается, но командной строкой не выходит.

Чтобы при запуске класса из одного jar-файла он видел другой нужно добавить его в аргументы запуска classpath (или cp):

java -cp project1.jar project2_main_class

Потом создал один проект и в нем два класса в разных пакетах и вроде структура каталогов выглядит логичнее, но собрать каждый класс в .jar не получается

Нет необходимости собирать классы одного проекта в отдельные jar-файлы. Собирайте весь проект в один и запускайте:

java -jar project.jar

Какой из способов верен?

Если ваши классы используются только для реализации общей функциональности и один без другого смысла не имеют, то нужно держать их вместе (упаковывать в одну библиотеку). В противоположном случае - каждый из них включает какой-то свой функционал и они могут быть использованы в других проектах, то можно упаковывать в отдельные библиотеки и подключать при необходимости.

READ ALSO
В чём отличие isBlank vs isEmpty?

В чём отличие isBlank vs isEmpty?

В чём отличие isBlank vs isEmpty?

384
Рисование направляющих в Google Maps API Android

Рисование направляющих в Google Maps API Android

В данном API есть функции рисования полигона и ломаных линийПосле рисования полигона нужно произвести разметку прямыми линиями как это показано...

439
Текстовые подсказки в JAVА

Текстовые подсказки в JAVА

Текстовые подсказки в JTextField и в JTextArea(если нетрудно)

421