Я получаю сообщение об ошибке при запуске компиляции maven в этом классе, но, похоже, при выполнении он работает нормально. Я просмотрел довольно много других сообщений по той же теме, но не смог заставить это работать для себя.
EDIT – удалены исходные фрагменты кода и заменены
EDIT – Предоставление MCVE — очень урезано
Кстати, это работает на Java 6
public class MainTester {
@SuppressWarnings("rawtypes")
public static void main(String[] args) {
ProtocolHandler<MappingRule> mappingProtocolHandler = new MappingProtocolHandler();
Map<String, List<MappingRule>> protocols = mappingProtocolHandler.getProtocols();
System.out.println(protocols);
}
}
Класс ProtocolHandler и Child:
public abstract class ProtocolHandler<E extends Rule<?, ?>> {
public Map<String, List<E>> getProtocols() {
return getProtocolsForRequest();
}
protected abstract Map<String, List<E>> getProtocolsForRequest();
}
@SuppressWarnings("rawtypes")
public class MappingProtocolHandler extends ProtocolHandler<MappingRule>{
@Override
protected Map<String, List<MappingRule>> getProtocolsForRequest() {
return new HashMap<String, List<MappingRule>>();
}
}
Классы правил:
public interface Rule<F, T> {
public void execute(F object, T object2);
}
public abstract class BaseRule<F, T> implements Rule<F, T>, Comparable<BaseRule<F, T>> {
}
public abstract class MappingRule<F,T> extends BaseRule<F, T> implements CustomAttributes{
}
public abstract class InputRule extends MappingRule<Object, Map<String,Object>> {
}
public abstract class OutputRule extends MappingRule<Map<String, Object>, Object> {
}
public interface CustomAttributes {
}
Классы обработчиков:
public abstract class ProtocolHandler<E extends Rule<?, ?>> {
public Map<String, List<E>> getProtocols() {
return getProtocolsForRequest();
}
protected abstract Map<String, List<E>> getProtocolsForRequest();
}
@SuppressWarnings("rawtypes")
public class MappingProtocolHandler extends ProtocolHandler<MappingRule>{
@Override
protected Map<String, List<MappingRule>> getProtocolsForRequest() {
return new HashMap<String, List<MappingRule>>();
}
}
[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) в проекте Test: Ошибка компиляции: Ошибка компиляции: [ОШИБКА]...\src\ main\java\common\main\MainTester.java:[14,18] параметр типа common.mapping.rule.MappingRule не находится в пределах своей границы [ERROR]...\src\main\java\common\handler\MappingProtocolHandler. Параметр типа java:[10,60] common.mapping.rule.MappingRule не находится в пределах его границ
ProtocolHandler
? Можете ли вы показать объявление класса, которое содержит это поле и метод? - person Sotirios Delimanolis   schedule 24.06.2015MappingRule
— это общий тип (с параметрами), но вы используете его необработанный. - person Seelenvirtuose   schedule 24.06.2015mappingProtocolHandler
. - person Sotirios Delimanolis   schedule 24.06.2015type argument MappingRule is not within bounds of type-variable E
, но он работает нормально, и Spring Source Tool Suite не показывает ошибок компиляции в коде. - person bhcmoney   schedule 24.06.2015