Java定义和使用含有泛型的类

定义和使用含有泛型的类

定义格式:

修饰符 class 类名<代表泛型的变量> {  }

例如,API中的ArrayList集合:

class ArrayList<E>{ 
    public boolean add(E e){ }

    public E get(int index){ }
   	....
}

使用泛型: 即什么时候确定泛型。

在创建对象的时候确定泛型

例如,ArrayList<String> list = new ArrayList<String>();

此时,变量E的值就是String类型,那么我们的类型就可以理解为:

class ArrayList<String>{ 
     public boolean add(String e){ }

     public String get(int index){  }
     ...
}

再例如,ArrayList<Integer> list = new ArrayList<Integer>();

此时,变量E的值就是Integer类型,那么我们的类型就可以理解为:

class ArrayList<Integer> { 
     public boolean add(Integer e) { }

     public Integer get(int index) {  }
     ...
}

举例

//普通类
public class Student1 {
    private String name;

    public String getName() {
        return name;
    }

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

自定义泛型类

public class Student2<E> {
    private E name;

    public E getName() {
        return name;
    }

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

使用:

public class Demo06Main {
    public static void main(String[] args) {
        Student1 stu = new Student1();//不带泛型
        stu.setName("only String allowed");
        String name = stu.getName();//当没有定义泛型时,这个变量只能由String接收,String是原来定义好的
        System.out.println(name);

        //定义使用泛型的类
        Student2<String> stu2 = new Student2<>();//带有泛型 泛型取String类型
        stu2.setName("String Type");
        String name1 = stu2.getName();// 此时泛型为String类型
        System.out.println(name1);

        Student2<Integer> stu3 = new Student2<>();//带有泛型 泛型取Integer类型
        stu3.setName(266666);
        Integer name2 = stu3.getName();//此时泛型为Integer类型
        System.out.println(name2);

        Student2 stu4 = new Student2();//不写泛型的情况
        stu4.setName("String Type");
        Object name3 = stu4.getName();//不写泛型默认的E就是Object类
       // int length = name3.length(); //不能写,Object类不能调用String类的特有方法

        String s = (String) name3;
        int length = s.length();
        System.out.println(length);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值