Привет, у меня есть инициализация, как показано ниже. Она показывает ошибку в eclipse как несоответствие типа. если я скомпилирую команду maven через командную строку, она компилируется без каких-либо ошибок.. с использованием eclipse luna и компилятора, установленного в java 1.7.
ReportData<Object> rdata = null;
rdata = new ReportData<>(reportCtx.get()); // error shown for this line in //eclipse.
ReportData<T>{
private T val;
public ReportData(T val){
this.val=val;
}
}
Я не понимаю, почему eclipse показывает ошибку для этого и как он компилируется в maven с тем же java 1.7. что не так с rdata = new ReportData<>(reportCtx.get());
инициализация.
ReportData<?>
- это супертип всех видов данных отчета.
ReportData<Object>
не является супертипом всех видов данных отчета.
Следовательно, вы не можете назначить:
ReportData<Object>
← ReportData<of an unknown kind>
См . Учебные пособия Java , Generics, Wildcards.
И BTW, в дополнение к...
ReportData<Object> rdata = new ReportData<Object>(reportCtx.get());
... различная декларация в...
ReportData<?> rdata = new ReportData<>(reportCtx.get());
... делает трюк, а также.