2013-07-08 66 views
0

我有这样的接口:多个泛型类型的Java编译器错误

public interface GenericWSEndpoint<T1,T2> { 

    public void call(String url,String operationName, T1 requestObject, T2 responseObject,long timeout) throws Exception; 

} 

当我尝试定义与这个物体,它给

org.apache.maven.BuildFailureException:编译失败: 不兼容的类型

对象定义:

private static GenericWSEndpoint<BulkCheckBlockageRequest,BulkCheckBlockageResponse> endpoint=GenericWsEndpointFactory.createSpecificEndpoint(WSTypes.CXF); 

和工厂代码:

public class GenericWsEndpointFactory{ 

    public static <T1,T2> GenericWSEndpoint createSpecificEndpoint(WSTypes type){ 
     switch (type) { 
     case CXF: 

      return new CXFWsEndPoint<T1,T2>(); 
     } 

     return null; 
    } 

} 

和CXFWsEndPoint(无specificly定义的构造函数):

public class CXFWsEndPoint<T1,T2> implements GenericWSEndpoint<T1, T2>{ 
. 
. 
} 

我也查了一下这个问题的答案,但他们用类似的递归仿制药的定义有关

任何想法?

编辑:异常:

[INFO]编译失败 ResponseManager \ SRC \主\的java \ COM \ X \ resman \ UTIL \ WebServiceUtil.java:[57142] 不兼容的类型;没有类型变量T1,T2的实例存在,所以 com.x.rbm.ws.service.GenericWSEndpoint符合 com.x.rbm.ws.service.GenericWSEndpoint found:com.x. rbm.ws.service.GenericWSEndpoint要求:

com.x.rbm.ws.service.GenericWSEndpointequest,com.x.resman.model.checkblockage.BulkCheckBlockageResponse>

+0

有例外的任何更多信息? –

+0

这个接口很好。错误必须在其他地方 –

+0

检查您的右侧类型,GenericWsEndpointFactory.createSpecificEndpoint(WSTypes.CXF);'? –

回答

2

尝试用下面的代码:

public static <T1, T2> GenericWSEndpoint<T1, T2> createSpecificEndpoint() { 

,而不是

public static <T1, T2> GenericWSEndpoint createSpecificEndpoint() { 
+0

它的工作。谢谢! – Neron

+0

您正在使用哪个IDE(如果有)? –

+0

EclipseIndıgo。 – Neron

0

你指定Java源代码版本在你的Maven POM文件中?目前,Maven默认使用1.5。你可能需要更近的东西。你在我们的IDE中使用什么版本?

相关的Maven配置为:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
    </configuration> 
</plugin> 

希望这有助于。

+0

我在maven有1.6版本,它与泛型兼容。这也不是maven问题 – Neron