создание объекта дженериков показывает ошибку в затмении, но компилируется в maven

1

Привет, у меня есть инициализация, как показано ниже. Она показывает ошибку в 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()); инициализация.

  • 2
    А что за ошибка сказать?
  • 0
    ошибка говорит о несоответствии типов: невозможно преобразовать ReportData <capture # 6-of?> в ReportData <Object>
Показать ещё 10 комментариев
Теги:
generics
maven
bounded-wildcard

1 ответ

2

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

... делает трюк, а также.

  • 0
    Я согласен с вашим объяснением ... но почему maven build не дает ошибки? Я использую JDK1.7.0_67 для компиляции. это не дает никакой ошибки. он компилируется нормально.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню