Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax.ws.rs.client.AsyncInvoker.get()在通用回调实现中失败_Java_Resteasy - Fatal编程技术网

javax.ws.rs.client.AsyncInvoker.get()在通用回调实现中失败

javax.ws.rs.client.AsyncInvoker.get()在通用回调实现中失败,java,resteasy,Java,Resteasy,尝试使用javax.ws.rs.client.client发出异步.get()请求,如下所示: client.target("http://localhost:8080") .path("/sample") .request() .async() .get(new GenericCallback<String>()); 得到这个例外 Exception in thread "main" java.lang.Illega

尝试使用
javax.ws.rs.client.client
发出异步
.get()
请求,如下所示:

client.target("http://localhost:8080")
        .path("/sample")
        .request()
        .async()
        .get(new GenericCallback<String>());
得到这个例外

Exception in thread "main" java.lang.IllegalArgumentException: Type must not be null
    at javax.ws.rs.core.GenericType.<init>(GenericType.java:156)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.submit(ClientInvocation.java:530)
    at org.jboss.resteasy.client.jaxrs.internal.AsynchronousInvoke.get(AsynchronousInvoke.java:52)
输出:

[class java.lang.String]
[class java.lang.String]
[null]
正如所料

使用实现调用回调的泛型类是否有解决方法

UPD。我使用最新版本的
javax.ws.rsapi
resteasyjaxrs

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.1</version>
</dependency>
<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <version>3.6.1.Final</version>
</dependency>
这是有效的

printTypesForCallback(new GenericCallback<String>() {});
printTypesForCallback(新的GenericCallback(){});

打印
[class java.lang.String]

您是否尝试将通用回调定义为
GenericCallback实现调用回调

不,我为什么要这么做?除了对象之外,它对任何东西都不起作用,但您需要通用功能,对吗?在不知道基类型的情况下,如何实现泛型功能?你知道的层次结构中的最大基本类型是Object.BTW,它适用于所有对象。如果您坚持让它是泛型的,而不让实现依赖于类型,那么对象是您唯一的选择。
<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.1</version>
</dependency>
<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <version>3.6.1.Final</version>
</dependency>
public interface GenericCallback<T> extends InvocationCallback<T> {
    @Override
    default void completed(T result) {
    }

    @Override
    default void failed(Throwable throwable) {
    }
}
printTypesForCallback(new GenericCallback<String>() {});