栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

泛型 1.04

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

泛型 1.04

基本概念:
  1. 泛型,又叫参数化类型,解决数据类型安全性问题
  2. 类声明和实例化指定需要的类型
  3. 保证程序编译没有警告,运行就没有ClassCastExcetion异常,代码简洁健壮
  4. 在类声明通过一个标识类中某个属性的类型,或方法返回值类型,参数类型
public class ge01 {
    public static void main(String[] args) {
        Person p = new Person<>("jack");
        System.out.println(p.getE());
        p.show();

    }
}
class Person{
    E e;

    public Person(E e) {
        this.e = e;
    }

    public E getE() {
        return e;
    }
    public void show(){
        System.out.println(e.getClass());
    }
}
细节
  1. 泛型<>是引用类型,默认为Object

  2. <>可以是指定类型,指定类型的子类

  3. 后面的<>中可以省略内容

自定义泛型类
public class ge01 {
    public static void main(String[] args) {
        Person p = new Person<>("jack");
        System.out.println(p.getE());
        p.show();

    }
}
class Person{
    E e;

    public Person(E e) {
        this.e = e;
    }

    public E getE() {
        return e;
    }
    public void show(){
        System.out.println(e.getClass());
    }
}
自定义泛型接口
public static void main(String[] args) {
        ge03 ge03 = new ge03();
        ge03.hi("ji");
        ge03.hello(34);

    }

    @Override
    public void hi(String o) {
        System.out.println(o);
    }

    @Override
    public void hello(Integer integer) {
        a.super.hello(integer);
    }
}
interface a{
    //E e;接口中不能使用静态属性泛型
    void hi(E e);
    default void hello(V v){
        System.out.println(v);
    }
}
自定义泛型方法
 public static void main(String[] args) {
        ge04 objectge04 = new ge04<>();
        objectge04.show(3);
        objectge04.show1(7.2);
    }

    public void show(M m){
        System.out.println(m);
    }//自定义泛型方法
    public void show1(E e){
        System.out.println(e);
    }//泛型在方法中的使用
}
泛型继承和通配符
public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
        ArrayList arrayList = new ArrayList<>();
        ArrayList aas = new ArrayList<>();
        ArrayList bs = new ArrayList();
        ArrayList ccs = new ArrayList<>();

        ge05 ge05 = new ge05();
        ge05.p(list);
        ge05.p(arrayList);
        ge05.p(aas);
        ge05.p(bs);
        ge05.p(ccs);

        //只能是BB或其子类CC
        //ge05.q(list);
        //ge05.q(arrayList);
        //ge05.q(aas);
        ge05.q(bs);
        ge05.q(ccs);

        //只能是BB或其父类AA
        //ge05.r(list);
        //ge05.r(arrayList);
        ge05.r(aas);
        ge05.r(bs);
        //ge05.r(ccs);



    }
    void p(List c){}
    void q(List q){}
    void r(List r){}
}
class AA{}
class BB extends AA{}
class CC extends BB{}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/697441.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号