Связанное несоответствие и препятствующий доступ после перехода с java6 на java8
У меня очень странная ошибка после переноса проекта PDE в bndtools и из java6 в java8. Структура очень сложная, но я уверен, что она работала в старой версии.
Ошибка в одном из моих классов, где я пытаюсь инициировать новую переменную:
GenericStorageItem<SharedItem> result;
Это приводит к следующей ошибке:
Bound mismatch: The type SharedItem is not a valid substitute for the bounded parameter <T extends Serializable> of the type GenericStorageItem<T>
Объект SharedItem определяется следующим образом:
public abstract class SharedItem extends LSContent implements Storable
Это расширяет LSContent, который выглядит так:
public abstract class LSContent implements PastContent
И, наконец, PastContent содержит ссылку на Serializable:
public interface PastContent extends Serializable
Класс, который отказывается быть связанным, является GenericStorageItem:
public class GenericStorageItem<T extends Serializable> implements StorageItem
В дополнение к этой ошибке я получаю следующее предупреждение при каждом использовании SharedItem
Discouraged access: The type 'SharedItem' is not API (restriction on required project 'the package where the class SharedItem comes from')
Из-за этого предупреждения и из-за того, что эта часть кода сработала, я думаю, что проблема как-то связана с правилами доступа. Я заглянул в Свойства проекта и увидел, что правило доступа не рекомендуется:** где на всех внешних банках.
Прочитав этот пост, я попытался удалить правила, но по какой-то причине после применения снова переключился.
Я надеюсь, что у кого-то из вас есть идея, как решить эту проблему.