Учитывая следующие типы подписей, я могу скомпилировать и запустить код под Maven с помощью JDK 6 и JDK 7, но Eclipse дает «Связанное несоответствие: тип F не является допустимым заместителем для ограниченного параметра <F extends Field<TP,F>>
of тип Field<TP,F>
"ошибка в TupleVisitor.Eclipse Generics Issue - Обход проблемы?
Я считаю, что мне нужны эти типы, хотя я понимаю, что это трудно мотивировать, учитывая урезанный пример. Может ли кто-нибудь предложить обходное решение, которое позволит мне продолжать работать в Eclipse?
public abstract class Tuple<F extends Field<TP, F>, TP extends Tuple<F, TP>>
public class VariableTuple<F extends Field<VariableTuple<F>, F>> extends Tuple<F, VariableTuple<F>>
public class ConstantTuple<F extends Field<ConstantTuple<F>, F>> extends Tuple<F, ConstantTuple<F>>
public class Field<TP extends Tuple<F, TP>, F extends Field<TP, F>>
public class ConstantField extends Field<ConstantTuple<ConstantField>, ConstantField>
public class VariableField extends Field<VariableTuple<VariableField>, VariableField>
public interface TupleVisitor {
public <F extends Field<VariableTuple<F>, F>> void visit(VariableTuple<F> tuple, F field); //Eclipse error
public <F extends Field<ConstantTuple<F>, F>> void visit(ConstantTuple<F> tuple, F field); //Eclipse error
}
Поданный ошибка по адресу: https://bugs.eclipse.org/bugs/show_bug.cgi?id=422503
Нет простое решение не было выявлено. Хотя ответ Рохита Джаина не будет работать с шаблоном посетителя, я принял его последующий совет и удалил F как параметр типа из поля.
Каков текущий уровень соответствия java-компилятора для проекта? –
Eclipse Уровень соответствия: JavaSE-1.6. –
Источник/целевой уровень Maven - 1.6. –