其他

java中的泛型

泛型

什么是泛型?

泛型就是定义一种模板

例如ArrayList<T>

然后在代码中为用到的类型创建对应的ArrayList<类型>

ArrayList<T> strlist = new ArrayList<String>()

优点:

  • 编写一次 万能匹配
  • 不必对类型进行强制转换
  • 编辑器保证了类型安全

使用泛型

如果不定义泛型类型时,泛型类型实际上就是Object

java的Object类

Object类是所有类的父类,也就是说任何一个类的定义的时候如果没有明确的继承一个父类的话,那么它就是Object的子类。

//编译器警告
//分清List 与 ArrayList 的区别
List list = new ArrayList();
list.add("hello");
//强制转换
String first = (String) list.get(0);
System.out.println(first);

定义泛型<String>后,List<T>的泛型接口变为强类型List<String>

//编译器无警告
List<String> listStr = new ArrayList<>();
listStr.add("nj-jay");
String first = listStr.get(0);
System.out.println(first);

定义泛型<Number>

所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。

 List<Number> listNum = new ArrayList<>();
 listNum.add(1);
 listNum.add(12.34);
 Number firstNum = listNum.get(0);
 System.out.println((int) firstNum + 1);
 Number secondNum = listNum.get(1);
 System.out.println((double) secondNum + 3.14);

自定义泛型

//student.java
public class student {

    private String name;
    private int age;

    public student() {

    }

    public student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

//Main
public class Main {

    public static void main(String[] args) {
        student stu1 = new student("nj", 20);
        student stu2 = new student("jay", 21);
        student stu3 = new student("nj-jay", 22);
        ArrayList<student> list = new ArrayList<>();
        list.add(stu1);
        list.add(stu2);
        list.add(stu3);
        for (int i = 0; i < list.size(); i++) {
            student stu = list.get(i);
            System.out.println(stu.getName() + stu.getAge());
        }
    }

深入理解计算机系统笔记

上一篇

又到了迷茫的年纪

下一篇

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片

个人微信公众号

we-tuiguang

qq交流群

群号:1046260719

微信扫一扫

微信扫一扫