Java Как использовать классы в другом пакете?

Можно ли импортировать, использовать класс из другого пакета? В Eclipse я сделал 2 пакета один главный другой второй

main
 -main (class)
second
 -second (class)

и я хотел, чтобы основная функция основного класса вызывала функцию x во втором классе. как мне это сделать? Я пробовал:

import second; 
second.x(); (if both classes are in the same package then it works)
second.second.x();

но никто из них не работал. Я сейчас не в курсе.

Ответы

Ответ 1

Вы должны указать полный путь, который хотите импортировать.

import com.my.stuff.main.Main;
import com.my.stuff.second.*;

Итак, в вашем основном классе у вас будет:

package com.my.stuff.main

import com.my.stuff.second.Second;   // THIS IS THE IMPORTANT LINE FOR YOUR QUESTION

class Main {
   public static void main(String[] args) {
      Second second = new Second();
      second.x();  
   }
}

EDIT: добавление примера в ответ на комментарий Shawn D

Существует еще одна альтернатива, как указывает Shawn D, где вы можете указать полное имя пакета для объекта, который вы хотите использовать. Это очень полезно в двух местах. Во-первых, если вы используете класс ровно один раз:

class Main {
    void function() {
        int x = my.package.heirarchy.Foo.aStaticMethod();

        another.package.heirarchy.Baz b = new another.package.heirarchy.Bax();
    }
}

В качестве альтернативы это полезно, если вы хотите различать два класса с одним и тем же коротким именем:

class Main {
    void function() {
        java.util.Date utilDate = ...;
        java.sql.Date sqlDate = ...;
    }
}

Ответ 2

Учитывая ваш пример, вам нужно добавить следующий импорт в свой класс main.main:

import second.second;

Некоторые советы по бонусу, убедитесь, что вы указали название своего класса, поскольку это стандарт Java. Таким образом, ваш основной класс класса будет иметь следующую структуру:

package main;  //lowercase package names
public class Main //titlecase class names
{
    //Main class content
}

Ответ 3

Это должно быть как import package_name.Class_Name → Если вы хотите импортировать определенный класс (Или)

import package_name.* → Чтобы импортировать все классы в пакет