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

Java泛型:定义泛型类时的通配符和类型参数语法

Java泛型:定义泛型类时的通配符和类型参数语法,java,generics,wildcard,type-parameter,Java,Generics,Wildcard,Type Parameter,在下面的泛型方法声明示例中,我认为这两个方法声明在和方面是相同的,因为它们接受相同类型的参数 public static <T extends List<? extends Number>> void fun(T arg){} public static void foo(List<? extends Number> arg){} 好的,那么为什么不允许使用以下语法来定义泛型类呢 public class foo<List<? extends N

在下面的泛型方法声明示例中,我认为这两个方法声明在和方面是相同的,因为它们接受相同类型的参数

public static <T extends List<? extends Number>> void fun(T arg){}
public static void foo(List<? extends Number> arg){}
好的,那么为什么不允许使用以下语法来定义泛型类呢

public class foo<List<? extends Numer>> {}
根据oracle的Java教程,是否因为我只能使用语法类名{/*…*/}来定义泛型类?Java还提供了一个额外的语法来定义泛型方法

因此,如果我想定义一个泛型类,比如公共类foo,以利用T和U,我只能通过以下方式来实现: 公务舱富?没有简洁的方法可以做到这一点


谢谢

从你的初衷。。。以下是有效的泛型类

public class MyClass<T extends List<? extends Number>> {}
它可以被用来如下

public class MyClass<T extends List<? extends Number>> {
    T myList;

    public T getMyList() {
        return myList;
    }

    public void setMyList(T myList) {
        this.myList = myList;
    }
}

public class Tester {
    public Tester() {
        MyClass<ArrayList<Number>> list = new MyClass<>();
        list.setMyList(new ArrayList<>());
        list.getMyList().add(new Integer(2));
        list.getMyList().add(new Long(3));
    }
}