Java构造函数中的泛型?

头脑风暴

考虑这个假设类(我在在线视频中发现):

public class Contrived<T extends Number> extends ArrayList<T> {
      List <? extends T> values;
      ......
    }

在这里,Contrived可以接受的类型变量Number或的某些子类型Number但是类本身是从继承的ArrayList,因此,无论该类获得什么类型,都将确定的类型ArrayList

现在有一个叫做场values,这是List<? extends T values>那么这是什么意思呢?是否list可以容纳任何扩展T(这反过来又延长Number)。

根据PECS (producer extends, consumer super)规则,我只能使用它List来读取元素,而不能添加到中list

constructor如果需要通过,外观会如何list of doubles or some type T

格特曼

您可以有一个采用List<T>或的构造函数List<? extends T>继续设计课程:

class B extends Number{
   public double doubleValue() { return 0; }
   public float floatValue() { return 0; }
   public long longValue() { return 0; }
   public int intValue() { return 0; }
}
class C extends B{}

我将一个人为的合法构造函数添加到Contrived该类中,并采用List<? extends T>

public Contrived(List<? extends T> values)
{
   this.values = values;
}

这使我可以编写main如下方法:

public static void main(String[] args)
{
   List<C> bList = Arrays.asList(new C(), new C(), new C());
   Contrived<B> ci = new Contrived<B>(bList);
}

我可以将传递给List<C>的构造函数Contrived<B>

合法的人为构造函数的另一种设计Contrived可能是List<T>

public Contrived(List<T> values)
{
   this.values = values;
}

这样的构造函数不允许使用List<C>a Contrived<B>,因为现在类型必须匹配,如以下两个Contrived示例所示:

public static void main(String[] args)
{
   List<C> cList = Arrays.asList(new C(), new C(), new C());
   Contrived<C> ci = new Contrived<C>(cList);  // must match now
}

public static void main(String[] args)
{
   List<B> bList = Arrays.asList(new B(), new B(), new B());
   Contrived<B> ci = new Contrived<B>(bList);  // must match now
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java在构造函数中定义泛型

来自分类Dev

用Java中的泛型类型重载构造函数

来自分类Dev

java中泛型类中的非泛型构造函数

来自分类Dev

Java泛型与非泛型构造函数

来自分类Dev

Java泛型复制构造函数

来自分类Dev

Java泛型复制构造函数

来自分类Dev

构造函数参数中的泛型

来自分类Dev

泛型构造函数中的重载解析

来自分类Dev

函数中的 Java 泛型

来自分类Dev

泛型类的泛型构造函数

来自分类Dev

构造函数泛型问题

来自分类常见问题

为什么Java编译器在构造函数实例化中无法跟踪泛型类型?

来自分类Dev

Java-在静态函数中构造泛型类的多个对象

来自分类Dev

在Java中,为什么不能在泛型类上使用构造函数?

来自分类Dev

Java 构造函数中的泛型错误不能应用于给定类型

来自分类Dev

Java泛型-构造函数调用的显式类型参数

来自分类Dev

Java泛型-构造函数调用的显式类型参数

来自分类Dev

Java模板:从泛型类型获取构造函数

来自分类Dev

需要C#中的泛型构造函数

来自分类Dev

使用泛型在抽象类中调用构造函数

来自分类Dev

C#中的条件泛型类型构造函数?

来自分类Dev

从TypeScript中的泛型类型获取构造函数/实例

来自分类Dev

在构造函数中初始化静态泛型列表

来自分类Dev

使用泛型在抽象类中调用构造函数

来自分类Dev

继承类中的泛型和构造函数

来自分类Dev

TypeScript 中泛型类型的返回构造函数

来自分类Dev

函数中的泛型

来自分类Dev

具有泛型构造函数的泛型类?

来自分类Dev

如何使泛型类型的构造函数