在类和方法中使用泛型时的不兼容类型

时间:2016-10-04 09:48:54

标签: java generic-programming

这里我有类使用泛型

public class ParamsContainer <E extends Enum<E> & Param>
{
  protected Map<E, Object> params;

  public <T> T getWithType(E param) {
    return (T) params.get(param);
  }
}

这里我从编译器中检查了失败的类型。

XMLGregorianCalendar rqDateTime = paramsContainer.getWithType(Param.SYS_RATES_DATE);

你能帮忙我收到消息吗? &#34;不兼容的类型。  需要:XMLGregorianCalendar  发现:对象&#34;

2 个答案:

答案 0 :(得分:1)

protected Map<E, Object> params;该值是一个对象,因此是一个对象

因此您可以尝试将对象转换为XMLGregorianCalendar

XMLGregorianCalendar rqDateTime = (XMLGregorianCalendar)paramsContainer.getWithType(Param.SYS_RATES_DATE);

答案 1 :(得分:1)

此处的问题与Map的值为Object类型有关,您应该使用更具体的类型。

但是,如果您知道该值的类型为XMLGregorianCalendar,则可以依赖于您在方法定义中定义的类型参数 T { {1}}并按下一步解决:

getWithType

有关通用方法的更多详细信息here