第8章-第1节-Java中的泛型(参数化类型)

这篇具有很好参考价值的文章主要介绍了第8章-第1节-Java中的泛型(参数化类型)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?

List arrayList = new ArrayList();
arrayList.add("aaaa");
arrayList.add(100);

for(int i = 0; i< arrayList.size();i++){
    String item = (String)arrayList.get(i);
    System.out.println(item);
}

2、概念:在类声明体中用到了类型参数。

/*
class 类型名<泛型标识,泛型标识, ...>{
    private 泛型标示 变量名;
}
*/
public class GenericDemo<T> {
    private T key;

    public GenericDemo(T key) {
        this.key = key;
    }

    public T getKey() {
        return key;
    }

    public void setKey(T key) {
        this.key = key;
    }

    public static void main(String[] args) {
        /*
        类名<具体的数据类型> 对象名 = new 类目<具体的数据类型>();

        JDK1.7后,可以省略成这样:
        类名<具体的数据类型> 对象名 = new 类目<>();
        */
        GenericDemo<Integer> integerGenericDemo = new GenericDemo<>(10);
        GenericDemo<String> stringGenericDemo = new GenericDemo<>("abc");
        //如果没有指定具体的数据类型,此时,操作类型是Object
        GenericDemo genericDemo = new GenericDemo("genericDemo");

        System.out.println(integerGenericDemo.key);
        System.out.println(stringGenericDemo.key);
        System.out.println(genericDemo.key);
        //泛型类型在逻辑上可以看成是多个不同的类型,但实际上是相同类型
      System.out.println(integerGenericDemo.getClass()==stringGenericDemo.getClass());	//输出结果为true
    }
}

3、泛型类只支持类类型,不支持基本数据类型(如int),但可以用包装类(如Integer )

泛型标识 含义
T Type 类型
E Element 元素
K Key 键
V Value 值

4、泛型类的继承:

1)、子类也是泛型类,子类和父类的泛型标识要一致。子类也可以扩展泛型标识,但子类中至少有一个泛型标识与父类相同;

2)、子类不是泛型类,父类要明确泛型的数据类型;

//1.子类也是泛型类,子类和父类的泛型标识要一致
class Child<T> extends Parent<T>{}

//也可以扩展,但子类中至少有一个泛型标识与父类相同
class Child<T,E> extends Parent<T>{}

//2.子类不是泛型类,父类要明确泛型的数据类型
class Child extends Parent<String>{}

 5、泛型方法:

泛型类和泛型方法的区别
泛型类 实例化类的时候指明泛型的具体类型
泛型方法 调用方法的时候指明泛型的具体类型
修饰符 <T,E,...> 返回值类型 方法名(形参列表){
    方法体... 
}

1)、 public 和 返回类型中间的标识符,可以理解为,声明该方法为泛型方法;

2)、只有声明了的方法是泛型方法,泛型类中的未申明的成员方法不是泛型方法;

3)、表明,该方法使用泛型类型T,可以使用在返回类型,传入参数列表,方法体里;

public class GenericDemo<T> {
    public static <E> void print(E... e){
        for(int i = 0; i < e.length; i++){
            System.out.println(e[i]);
        }
    }

    public static void main(String[] args) {
        GenericDemo.print(1,2,3,4,5);
        GenericDemo.print("a","b","c");
    }
}

6、泛型总结:

泛型代码层面:
1): 集合   List<String>  限制集合内元素类型
2):泛型类和泛型方法  :  提高方法或者类的灵活度  , 设计度
                 目的:能让一个方法或者类  干跟多 相似的业务!!!
理论层面:
    1): 继承 :
        1> 子类 继承 泛型父类 ,
            1.1> 如果子类也是泛型类,那么至少要有一个标识和父类相同
                子类也可以有自己的泛型标识
            1.2> 如果子类不是泛型类,那么在继承/实现的时候,就要指定
                父类的泛型标识的数据类型!!!
                如果不指定,编译器会按照 Object 处理!!!
    2):  为什么编译会按照Object 来处理
        泛型擦除:泛型 只会在 编译的时候起作用,
        在编译完成后,JAVA虚拟机在运行时将会擦除所有的泛型标识 ,
        这个时候,如果没有给定泛型标识的类型,那么就会按照Object处理!!!

本电子书目录:《Java基础的重点知识点全集》文章来源地址https://www.toymoban.com/news/detail-816656.html

到了这里,关于第8章-第1节-Java中的泛型(参数化类型)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 中的泛型是什么,它有什么作用?(十五)

    Java中的泛型是一种类型参数化机制,它使代码更具可读性、可重用性和稳健性。在Java中,通过使用泛型,可以将类型作为参数传递给类或方法,并在编译时执行类型检查,从而避免许多运行时错误。 泛型的基础 Java泛型的基础概念是类型变量、类型参数和类型边界。 类型变

    2024年02月03日
    浏览(38)
  • TypeScript中的泛型(泛型函数、接口、类、泛型约束)

    一、泛型函数 TypeScript 泛型是一种可以使代码具有更高的可重用性和泛化能力的特性 。通过泛型,我们可以定义一种通用的类型或函数,使其能够应对多种类型的输入。泛型在类、函数、接口等多种场景下都可以使用。 具体来说,在定义泛型函数时,我们可以使用来表示一

    2024年02月11日
    浏览(44)
  • 【TypeScript】TypeScript中的泛型

    定义一个函数或类时,有些情况下无法确定其中要使用的具体类型(返回值、参数、属性的类型不能确定),此时泛型便能够发挥作用。 举个例子: 上例中,test函数有一个参数类型不确定,但是能确定的时其返回值的类型和参数的类型是相同的,由于类型不确定所以参数和

    2024年02月09日
    浏览(46)
  • C++中的泛型详细讲解

    它是一种泛化的编程方式,其实现原理为程序员编写一个函数/类的代码示例,让编译器去填补出不同的函数实现。允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或

    2024年02月12日
    浏览(51)
  • Kotlin中的泛型理解与应用

    泛型是一种在编程中用于增加代码的灵活性和重用性的概念。它允许我们编写可以在多种类型上工作的通用代码,而不需要为每种类型都编写不同的代码。 在Kotlin中,泛型可以应用于类、函数和接口等。下面是一些关于泛型在Kotlin中的理解和示例。 1、泛型类 泛型类是指可以

    2024年02月07日
    浏览(37)
  • python中的泛型使用TypeVar

    PEP484的作者希望借助typing模块引入类型提示,不改动语言的其它部分。通过精巧的元编程技术,让类支持[]运算不成问题。但是方括号内的T变量必须在某处定义,否则要大范围改动python解释器才能让泛型支持特殊的[]表示法。 鉴于此,我们增加了typing.TypeVar构造函数,把变量

    2024年02月04日
    浏览(49)
  • java的泛型【详解】

    定义类、接口、方法时,同时声明了一个或者多个类型变量(如:E) ,称为泛型类、泛型接口,泛型方法、它们统称为泛型。 作用:泛型提供了在编译阶段约束所能操作的数据类型,并自动进行检查的能力!这样可以避免强制类型转换,及其可能出现的异常。 1.泛型类:

    2024年02月19日
    浏览(41)
  • Java的泛型详解

    Java泛型是一种编程语言的特性,它允许类、接口和方法在定义时使用一个或多个类型参数,这些类型参数在调用时会被实际类型替换,从而增强了代码的重用性和类型安全性。通过使用泛型,我们可以编写出更加通用的代码,同时也可以减少代码中的强制类型转换操作,提高

    2024年02月04日
    浏览(39)
  • Java的泛型

    泛型是我们需要的程序设计手段。使用泛型机制编写的程序代码要比那些杂乱地使用 Object 变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。 至少在表面上看来,泛型很像 C++ 中的模板。与 Java —样,在 C++ 中,模板也是最先被添加到语言中支持强类型集合的

    2024年02月08日
    浏览(39)
  • Java泛型:灵活多变的类型参数化工具

    👑专栏内容:Java ⛪个人主页:子夜的星的主页 💕座右铭:前路未远,步履不停 在传统的编程方法中,类和方法通常被限定为使用特定的类型。这些类型可能是基础的数据类型(如整数、字符等),或者是由程序员自己定义的复杂类型。这种方式在处理单一类型数据时很有

    2024年02月01日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包