• Java学习笔记 --- 泛型


    一、泛型的好处

    1、编译时,检查添加元素的类型,提高了安全性

    2、减少了类型转换的次数,提高效率

    不使用泛型:

    Dog -> Object -> Dog  放入到ArrayList 会先转成 Object,在取出时,还需要转换成Dog

    使用泛型:

    Dog -> Dog -> Dog 放入时,和取出时,不需要类型转换,提高效率

    3、不再提示编译警告

    1. import java.util.ArrayList;
    2. public class Genericc01 {
    3. public static void main(String[] args) {
    4. //使用泛型
    5. //1. 当我们 ArrayList 表示存放到 ArrayList 集合中的元素是 Dog 类型
    6. //2. 如果编译器发现添加的类似,不满足要求,就会报错
    7. //3. 在遍历的时候,可以直接取出 Dog 类型而不是 Object
    8. ArrayList arrayList = new ArrayList();
    9. arrayList.add(new Dog("小黑", 10));
    10. arrayList.add(new Dog("小白", 5));
    11. arrayList.add(new Dog("小黄", 2));
    12. //假如不小心添加了一只猫
    13. //编译器会报错
    14. //arrayList.add(new Cat("岁岁"));
    15. for (Dog o : arrayList) {
    16. System.out.println(o.getName() + "-" + o.getAge());
    17. }
    18. }
    19. }
    20. class Dog {
    21. private String name;
    22. private int age;
    23. public Dog(String name, int age) {
    24. this.name = name;
    25. this.age = age;
    26. }
    27. public String getName() {
    28. return name;
    29. }
    30. public void setName(String name) {
    31. this.name = name;
    32. }
    33. public int getAge() {
    34. return age;
    35. }
    36. public void setAge(int age) {
    37. this.age = age;
    38. }
    39. }
    40. class Cat {
    41. private String name;
    42. public Cat(String name) {
    43. this.name = name;
    44. }
    45. public String getName() {
    46. return name;
    47. }
    48. public void setName(String name) {
    49. this.name = name;
    50. }
    51. }

    二、基本介绍

    1、泛型又称参数化类型,是JDK5.0出现的新特性,解决数据类型的安全性问题

    2、在类声明或实例化时只要指定好需要的具体的类型即可

    3、Java泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生ClassCastException异常。同时代码更加简洁,健壮

    4、泛型的作用是:可以在类声明时通过一个标识表示类中某个属性的类型,或者是某个方法的返回值的类型,或者是参数类型

    1. public class Generic02 {
    2. public static void main(String[] args) {
    3. //该数据类型在定义Person对象的时候指定,即在编译期间就确定E是什么类型
    4. Person person = new Person("张三");
    5. person.show();//class java.lang.String
    6. /* 可以这样理解
    7. class Person {
    8. String s; //E表示s的数据类型,该数据类型在定义Person对象的时候指定,即在编译期间就确定E是什么类型
    9. public Person(String s) { //E也可以是参数类型
    10. this.s = s;
    11. }
    12. public String f() {
    13. return s;
    14. }
    15. }
    16. */
    17. }
    18. }
    19. //泛型的作用是:可以在类声明时通过一个标识表示类中某个属性的类型,
    20. //或者是某个方法的返回值的类型,或者是参数类型
    21. class Person {
  • 相关阅读:
    9成企业打算发年终奖,人均到手2.3万元
    Linux项目自动化构建工具-make/Makefile
    (MATLAB)第三章-MATLAB基础知识
    fba海运详解:fba海运是什么意思,FBA海运费用怎么算
    2023-10-28 思考-精力管理-分析
    leetcode-1582:二进制矩阵中的特殊位置
    翻译软件哪个准确度高
    web前端期末大作业:HTML+CSS+JavaScript绿色的盆栽花店网站响应式模板 大学生鲜花网页设计
    【设计模式】10分钟学懂UML类图
    好消息,终于可以获取到支付宝【支付交易投诉】的信息了。。。
  • 原文地址:https://blog.csdn.net/a1404359447/article/details/127802069