嗨,我有一些初始化如下...。它显示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>

请参见The Java™ Tutorials , Generics, Wildcards

和顺便说一句,除了...

ReportData<Object> rdata = new ReportData<Object>(reportCtx.get());


...在...中的不同声明

ReportData<?> rdata = new ReportData<>(reportCtx.get());


...也可以解决问题。

10-06 05:45