码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java泛型


    为什么需要泛型

    在学泛型的时候更加关注这个问题,下面是对java核心的总结

    • 多态获取一个值时需要强转
    • 多态get时会有强转的安全性问题,编译错误要优于运行时强转异常
    • 泛型使代码具有更好的可读性

    泛型的使用

    package 泛型;
    
    import org.junit.jupiter.api.Test;
    
    import java.util.LinkedList;
    
    /**
     * 2022-06-22 19:38
     *
     * 这个例子的继承结构  Animal-> Person-> Student
     *
     * 通配符
     * ?(正无穷,负无穷)
     * ?extend a   (负无穷,a]
     * ?super a    [a,正无穷}
     * 这里的从小到大指 继承关系 从低到高
     *
     * 个人感觉泛型相对于多态 更加清晰、 更加快(不需要强转)、是编译时、
     */
    public class GenericTest {
    //    原则  赋值一定是被赋值的子类或本身。(多态)
        @Test
        void Test1(){
            LinkedList<? super Person> list_s = new LinkedList<>();
            LinkedList<? extends Person> list_e = new LinkedList<>();
    //        写 :只能写入通配符的子类或者最大本身(最父)或null
            list_s.add(new Student());
    //        list_e.add(new Person());  //报错
    //        读:只能读入通配符的父类或者最小本身(最子)或Object
            Animal item1 = list_e.getFirst();
    //        Animal item2 = list_s.getFirst();  //报错
    //        在声明时 ,需要前后一致
    //        LinkedList l = new LinkedList(); //报错
        }
    }
    // 泛型类、 泛型接口、 泛型方法的使用
    class Person<T,K> extends Animal implements leg <K> {
        T t;
        Person(){}
    //    泛型方法一定新声明了一个方法
        <E> T show (E e){
            System.out.println(e);
            return t;
        }
        public void run(K k){
            System.out.println(k);
        }
    }
    interface leg <K> {
         void run(K k);
    }
    class Student <T,K> extends Person<T,K>{}
    class Animal{}
    //调用,方法名前声明泛型
     new c(). <Integer>a(00);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
  • 相关阅读:
    node笔记记录78模板引擎4
    神经网络激活函数的使用
    服务器防漏扫,主机加固方案来解决
    Spring修炼之旅(3)自动装配与注解开发
    java04 -程序控制结构
    Django的ORM操作
    记录在BOSS直聘上遇见一位恶心的面试官——付润豪(华如科技的C++工程师)
    【Paper】2022_切换拓扑下动态事件触发多智能体系统固定时间一致性
    Python 爬虫实战 —— 爬取小说
    江西广电会展集团总经理李悦一行莅临拓世科技集团调研参观,科技璀璨AIGC掀新潮
  • 原文地址:https://blog.csdn.net/qq_51682771/article/details/125420196
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号