Мой коллега и я столкнулись с этим предупреждающим сообщением пару раз недавно. Для ниже кода:
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);
}
}
Разобрался.
Эти классы (GenericDAO
и DAOFactory
в качестве возвращаемых типов) и EntityBean
находились в разных пакетах. Один из пакетов (содержащий EntityBean
) был указан в разделе Export-Package:
файла манифеста, а другой пакет (DAO
s) - нет. Чистый эффект заключается в том, что классы DAO
были неAPI и возвращались API-типом.
Спасибо всем, особенно JRL за то, что сориентировал меня в правильном направлении.
Просматривали ли вы следующие документы Eclipse: Правила взаимодействия API и Настройки ошибок и предупреждений API ?