Использование класса внутри файла интерфейса из другого пакета - PullRequest
0 голосов
/ 18 мая 2018

У меня есть два пакета.Первый содержит пустой интерфейс и класс, реализующий его в одном файле («IThing» и «Thing»).Второй содержит другой интерфейс («IThingUser»), в котором есть функция, возвращающая объект типа «Вещь».

Когда оба файла являются частью одного пакета, все работает нормально, но если они находятся в двухотдельные пакеты, один в package2 не может получить доступ к классу, определенному в первом пакете.

Package1 содержит следующий файл:

package project.package1;

public interface IThing {
}

final class Thing implements IThing {

    private int thingField;

    public int thingFieldGetter(){
        return thingField;
    }
}

И package2 имеет:

package project.package2;

import project.package1.IThing;

public interface IThingUser {

    public IThing someFunction(); // Works fine

    public Thing anotherFunction();
    // "Thing" is not recognized when the two files are in separate packages.
}

Почему это происходит?Есть ли способ исправить эту проблему, сохранив эту архитектуру?

PS: Я знаю, что структура этого не имеет особого смысла, но я не кодировал package1, и я должен использовать его как есть.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Проблема в том, что project.package1.Thing является невидимым вне пакета project.package1, но публичные классы должны быть определены в своих собственных файлах .

0 голосов
/ 18 мая 2018

Класс Thing имеет видимость для пакета.Вы не сможете получить доступ к нему вне пакета project.package1, пока он не будет реализован как

public final class Thing implements IThing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...