0

我有一个这样的界面:

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(没有专门定义的构造函数):

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

我已经检查了有关此问题的答案,但它们与递归泛型等定义有关

有任何想法吗?

编辑:例外:

[INFO] 编译失败 ResponseManager\src\main\java\com\x\resman\util\WebServiceUtil.java:[57,142] 不兼容的类型;不存在类型变量 T1、T2 的实例,因此 com.x.rbm.ws.service.GenericWSEndpoint 符合 com.x.rbm.ws.service.GenericWSEndpoint 发现:com.x.rbm.ws .service.GenericWSEndpoint 需要:

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

4

2 回答 2

2

尝试使用以下代码:

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

代替

  public static <T1, T2> GenericWSEndpoint createSpecificEndpoint() {
于 2013-07-08T08:52:44.737 回答
0

您是否在 Maven POM 文件中指定 Java 源代码版本?目前,默认情况下 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>

希望这可以帮助。

于 2013-07-08T08:46:38.947 回答