Eclipse, предупреждающий: “<methodName> имеет тип возврата не-API <parameterizedType>”

Мой коллега и я столкнулись с этим предупреждающим сообщением пару раз недавно. Для ниже кода:

package com.mycompany.product.data;

import com.mycompany.product.dao.GenericDAO;

public abstract class EntityBean {
    public abstract GenericDAO<Object, Long> getDAO();
    //                                       ^^^^^^      <-- WARNING OCCURS HERE
}

предупреждение появляется в перечисленном месте как

EntityBean.getDAO() has non-API return type GenericDAO<T, ID>

Поиск Google "имеет тип возврата не-API", только показывает экземпляры, где это сообщение появляется в списках вопросов. Т.е. нет никакого общедоступного объяснения его.

Что это означает? Мы можем создать проблему использования, просачиваются Eclipse, чтобы заставить сообщение уйти, но мы не хотим делать это, если наше использование является законной проблемой.

Спасибо!

Править: Это предупреждение не имеет отношение к параметризации как это объявление getFactory() также результаты в том же предупреждении:

public abstract class EntityBean {
    protected DAOFactory getFactory() {
        return DAOFactory.instance(DAOFactory.HIBERNATE);
    }
}
5
задан James Cronen 6 April 2010 в 18:35
поделиться

2 ответа

Разобрался.

Эти классы (GenericDAO и DAOFactory в качестве возвращаемых типов) и EntityBean находились в разных пакетах. Один из пакетов (содержащий EntityBean) был указан в разделе Export-Package: файла манифеста, а другой пакет (DAOs) - нет. Чистый эффект заключается в том, что классы DAO были неAPI и возвращались API-типом.

Спасибо всем, особенно JRL за то, что сориентировал меня в правильном направлении.

4
ответ дан 14 December 2019 в 19:08
поделиться

Просматривали ли вы следующие документы Eclipse: Правила взаимодействия API и Настройки ошибок и предупреждений API ?

1
ответ дан 14 December 2019 в 19:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: