2017-01-04 3 views
2

У меня есть следующий код, в котором я пытаюсь расширить класс, но конструктор имеет следующую ошибку:Невозможно подклассы с шаблоном Builder: Отгрузка (Builder) не является общедоступной в Отгрузке; не может быть доступны из вне пакета

«Пересылка (Builder) не является общедоступным в пересылке, не может быть доступна из внешний пакет. "

Ни один из других ответов на SO, похоже, не применит или не устранит проблему. Я благодарен за любую сторону ...

Мой подкласс:

public class ShipmentSubclass extends Shipment { 

public double foo; 

public ShipmentSubclass(Builder builder) { 
    super(builder); 
    this.foo = 0.0; 
} 

И Пересылка определяется в другом пакете (импортируемого в баночке):

public class Shipment{ 

    public static class Builder { 
    private String id; 
    public Builder(String id) { 
     this.id = id; 
    } 

    public Shipment build() { 
     return new Shipment(this); 
    } 
    } 

    private final String id; 

    public Shipment(Builder builder) { 
    this.id = builder.id; 
    } 
} 
+2

Я наклеил ваш код локально, и он отлично работает для меня. Также функция Shipment (Builder) явно доступна в классе Shipment, поэтому мне интересно, используете ли вы тот же код, что и вы вставили? – foolo

+0

Настоящий код сложнее. Родительский класс Отгрузка из другого пакета, который я добавил как Jar. Я сделал то же самое в новом проекте, и ошибка возникает только при попытке расширить родительский элемент из другого пакета. Я отредактировал вопрос, чтобы отметить это. –

+0

Хорошо, но тогда сообщение об ошибке, вероятно, правильно. В вашем «реальном» коде конструктор Shipment (Builder builder) является закрытым, а отправка - из другого пакета. Таким образом, вам нужно либо перейти на тот же пакет, либо сделать этот конструктор общедоступным, если сможете. – foolo

ответ

0

Проведя несколько часов на этом я отказался [от Netbeans] и сделал новый проект в Eclipse Neon. Эта же проблема сохранялась при подклассификации класса из jar, но я добавил источник в качестве требуемого проекта, ошибка исчезла, и я продолжил.

Смежные вопросы