Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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 - Fatal编程技术网

Java通用通配符边界不起作用

Java通用通配符边界不起作用,java,generics,Java,Generics,我遇到过这样一种情况:我无法理解所展示的编译器行为背后的原因。我已经编写了以下代码片段- public class OutgoingStub<T> { public OutgoingStub<T> tryThis(T val){ return new OutgoingStub<T>(); } public void f(Set<? extends Number> set){ } publ

我遇到过这样一种情况:我无法理解所展示的编译器行为背后的原因。我已经编写了以下代码片段-

public class OutgoingStub<T> {
    public OutgoingStub<T> tryThis(T val){
        return new OutgoingStub<T>();
    }

    public void f(Set<? extends Number> set){

    }

    public static void main(String[] args) {
        Set<? extends Number> set = new HashSet<Integer>();

        **OutgoingStub<Set<? extends Number>> stub = Mocktest.mock(set);** //Unable to assign the reuturn value in a variable. compiler complains.
    }
}

class Mocktest {
    public static <T> OutgoingStub<T> mock(T val){
        return new OutgoingStub<T>();
    }
}
公共类支出存根{
公共支出存根交易(T val){
返回新的支出存根();
}

public void f(Set调用
mock
时,应该明确告诉编译器要使用什么类型的参数:

OutgoingStub<Set<? extends Number>> stub = Mocktest.<Set<? extends Number>>mock(set);

OutgoingStub调用
mock
时,应该明确告诉编译器要使用的类型参数:

OutgoingStub<Set<? extends Number>> stub = Mocktest.<Set<? extends Number>>mock(set);
OutgoingStub