java泛型详解,深入理解java泛型详解

  java泛型详解,深入理解java泛型详解

  

目录

什么是接口派生子类的泛型泛型泛型类和泛型通配符类型擦除?

 

  

什么是泛型

早期的对象类型可以接收任何对象类型,但是在实际使用中,会出现类型转换的问题。还有这个隐患,所以Java提供了泛型来解决这个安全问题。

 

  泛型,即“参数化类型”。说到参数,最熟悉的就是用可见的参数定义一个方法,然后调用这个方法进行时间传递。

  传递实际参数。也就是说,我们可以将类型作为参数传递。

  //泛型类//T可以是任何字符,如A、A、B等。可以是公共类Demo1T { private T numpublic demo 1(){ } public demo 1(T num){ this . num=num;} public void setNum(T num){ this . num=num;} public static void main(String[]args){ demo 1 integer demo 1=new demo 1(101);}}如上所述,实际传入时应该指明输入的实际类型。这里是Integer(泛型不能是int等基本类型,只能是引用类型)。如果没有指明,则默认为对象类型。

  您也可以定义多个泛型。

  公共类Demo1T,A { }

  00-1010这里我们定义了一个Demo2类来继承上面的Demo1类。

  正如你所看到的,这显然是行不通的,所以这里有两个解决方案。

  1.指明父类属的特定类型,如:

  public demo 2的子类扩展了demo 1 integer {} 2。也是泛型类,如:

  Class demo2t扩展demo1t {}子类也是泛型类,子类和父类的泛型类型要一致。

  子类不是泛型类,父类应该指定泛型数据类型。

  泛型接口的定义和使用与泛型类基本相同。

  00-1010我相信很多人都看过这种写法。

  马鞭是什么意思?那我们来解释一下。

  马鞭代表一个类型通配符,这意味着当一个参数被传入时,任何类型都可以被传入。

  比如上面demo1中的new对象也可以这样写。

  Demo1?demo1=新demo 1(101);马鞭只能表示传入的具体实参,形参在类上,所以?只有明确传入时才能使用。实际传入的参数类型可以是任意的。

  类型上限:

  类/接口?扩展参数类型

  //?扩展Numberpublic静态void方法(Demo1?扩展数字demo 1){ }公共静态void main(String[]args){ method(new demo 1 integer());}如上,我们在方法()中传递的参数是上面定义的Demo1类类型,Extends Number是指我们实际传入的类型的上限是Number,也就是说合法传入的只有Number和Number的子类(这里传入的是Integer,Number是Integer的父类)。

  类型下限3360

  类/接口?超级参数类型

  知道了上限,这里的下限也就不难理解了,就是传入的一定是它自己或者它的父类。

  公共静态void方法1(演示1?超级数demo 1){ } public static void main(String[]args){ method 1(new demo 1 object());} Number或者它的父类必须在这里被传入(这里,它是Object类)

  

泛型类与接口派生子类

泛型是Java版本1.5中引入的概念。在此之前,没有泛型。但是,泛型代码可以很好地兼容以前版本的代码。那是因为无处不在的信息只存在于代码编译阶段。在进入JVM之前,与泛型相关的信息会被擦除,这就是所谓的类型擦除。在泛型类被类型擦除后,相应的类型将被对象类型或上限类型替换。

 

  也就是说,泛型只存在于编译期。当代码实际执行时,没有泛型的概念。它只约束我们在编译时传入的类型。

  关于java对泛型的简明图解和解释的这篇文章到此为止。有关java泛型的更多信息,请搜索以前关于流行IT的文章或继续浏览下面的相关文章。我希望你将来能支持流行它!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: