Предупреждение Eclipse: «<methodName> имеет тип возврата не-API <parameterizedType>» - PullRequest
5 голосов
/ 06 апреля 2010

Недавно мы с коллегой встречали это предупреждение несколько раз. Для кода ниже:

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);
    }
}

Ответы [ 2 ]

4 голосов
/ 06 апреля 2010

Разобрался.

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

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

1 голос
/ 06 апреля 2010

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

...