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

Han XIAO

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

public static <T extends List<? extends Number>> void fun(T arg){}
public static void foo(List<? extends Number> arg){}

OK,那为什么不允许使用下面的语法来定义泛型类呢?

public class foo<List<? extends Numer>> {}

根据oracle的Java教程,是不是因为我只能使用语法class name<T1, T2, ..., Tn> { /* ... */ }来定义泛型类?并且 Java 还提供了额外的语法糖来定义泛型方法?

所以,如果我想定义一个像public class foo<T extends List<U extends Number>>使用Tand一样的泛型类U,我只能通过以下方式来做到:public class foo<U extends Number, T extends List<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));
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

泛型,类型参数和通配符

来自分类Dev

泛型Java通配符和子类型

来自分类Dev

如何从泛型定义和泛型参数获取泛型类型?

来自分类Dev

如何从泛型定义和泛型参数获取泛型类型?

来自分类Dev

从Object,泛型类和通配符未经检查的类型转换

来自分类Dev

Java泛型通配符与类型化泛型用法

来自分类Dev

Java泛型用于参数化类:无限通配符与原始类型

来自分类Dev

Java泛型用于参数化类:无限通配符与原始类型

来自分类Dev

在泛型类型的泛型类上访问类型参数

来自分类Dev

泛型类和通配符的上限

来自分类Dev

泛型java函数使用的“类型参数”的“类类型”

来自分类Dev

在类中声明类型参数时,Java泛型类型会丢失常量类型

来自分类Dev

泛型方法和泛型类中的类型推断

来自分类Dev

Java泛型,类型擦除和泛型成员的类型

来自分类Dev

泛型类型参数范围和具体类

来自分类Dev

Java泛型-获取泛型参数的实际类型

来自分类Dev

Java泛型-获取泛型参数的实际类型

来自分类Dev

Java泛型语法

来自分类Dev

泛型类使用泛型参数

来自分类Dev

在泛型类隐式类型参数

来自分类Dev

Java泛型-参数化的类与类型化方法

来自分类Dev

Java泛型方法采用类类型的参数

来自分类Dev

如何定义不是类的泛型类型?

来自分类Dev

超类的Java泛型,但并非所有子类都希望定义类型参数

来自分类Dev

Java泛型和强制转换泛型类型

来自分类Dev

Java泛型的双通配符参数化(嵌套通配符)

来自分类Dev

统一的参数传递和类型安全与Java泛型

来自分类Dev

Scala 自类型和泛型类

来自分类Dev

参数化的类和方法:使用Java泛型使方法返回正确的类型

Related 相关文章

热门标签

归档