Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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
Java 未编译带有通配符的泛型_Java_Generics_Interface_Wildcard - Fatal编程技术网

Java 未编译带有通配符的泛型

Java 未编译带有通配符的泛型,java,generics,interface,wildcard,Java,Generics,Interface,Wildcard,未编译以下代码: public class Example { public void method() { Callback<BaseResponse> br = null; Request<? extends BaseResponse> req = null; req.startRequest(br); //compile-time error here!! } public interfac

未编译以下代码:

public class Example {

    public void method() {
        Callback<BaseResponse> br = null;
        Request<? extends BaseResponse> req = null;
        req.startRequest(br); //compile-time error here!!
    }

    public interface Callback<T> {
        void onResponse (T response);
        void onFailure (String error, int code);
        void onFailure (Throwable t);
    }

    public static class BaseResponse {
        public String status;
    }

    public interface Request<BaseResponse> {
        void startRequest(Callback<BaseResponse> callback);
    }
}
公共类示例{
公开作废法(){
回调br=null;

请求您的问题就在这条线上

public interface Request<BaseResponse> {

或者类似的东西。

我们应该忽略将要抛出的
NullPointerException
?您可以包含一些实际的代码吗?不确定为什么在将变量设置为null后要取消对该行的引用。@DimaSan,OP明确地说,如果我去掉了扩展部分,代码就会编译,但我需要它。@SeanBright sure,没有注意到这一点,谢谢你的评论。这非常有效。我的真实代码中实际上有
t extends BaseResponse
,但它给了我编译时错误。我认为这实际上是由NetBeans中的一些错误造成的。错误是
不兼容的类型:回调无法转换为回调,其中CAP#1是一个新的类型变量:CAP#1从捕获扩展BaseResponse开始扩展BaseResponse。这在NetBeans中不是一个错误。千万不要因为工作质量而责怪工具。通配符泛型对变量声明没有好处,因为无法判断要使用什么类型。
表示“未知类型”,显然,这不能作为类型声明。捕获失败与此类似;您未共享的代码试图将“未知类型”等同于特定类型,而编译器无法对此进行验证。
public interface Request<T extends BaseResponse> {