泛型:把明确数据类型的工作,提前到了编译时期,在创建集合的时候明确存储元素的数据类型。这样的做法有点向把数据类型当作参数一样传递,所以泛型还有一个叫法:参数化类型泛型的语句定义格式:<引用数据类型>注意:尖括号中的数据类型只能是引用数据类型泛型的好处:1、将我们运行时期出现的问题,提前到编译时期2、不需要做强制类型转换3、优化了代码。消除了不必要的黄色警告线,使代码看起来更简洁通过观察API发现,泛型可以出现在类,接口,方法上面,我们看到的类似于<E>这样的都叫泛型,一般来说,泛型出现大多使用的集合中。
public class GenericDemo {public static void main(String[] args) {//创建一个List集合对象//在JDK1.7之后,泛型会进行自动类型推断ArrayList<String> list = new ArrayList<>();//向集合中添加元素list.add("hello");list.add("hello");list.add("hello");list.add("hello");list.add("hello");
//        list.add(20);
//        list.add(12.34);
//        list.add(new Student());//遍历
//        Iterator iterator = list.iterator();
//        while (iterator.hasNext()) {
//            Object next = iterator.next();
//
//            String s = (String) next; //ClassCastException
//
//            System.out.println(next);
//        }//遍历Iterator<String> iterator = list.iterator();while (iterator.hasNext()){String next = iterator.next();System.out.println(next);}}
}
泛型通配符<?>任意类型,如果没有明确,那么就是Object以及任意的Java类了
? extends E向下限定,E及其子类
? super E向上限定,E及其父类
public class GenericDemo1 {public static void main(String[] args) {ArrayList<Animal> list1 = new ArrayList<Animal>();ArrayList<Dog> list2 = new ArrayList<Dog>();ArrayList<Object> list3 = new ArrayList<Object>();//泛型通配符<?>//任意类型,如果没有明确,那么就是Object以及任意的Java类了ArrayList<?> list4 = new ArrayList<Animal>();ArrayList<?> list5 = new ArrayList<Dog>();ArrayList<?> list6 = new ArrayList<Object>();//? extends E  向下限定,E及其子类ArrayList<? extends Animal> list7 = new ArrayList<Animal>();ArrayList<? extends Animal> list8 = new ArrayList<Dog>();ArrayList<? extends Animal> list9 = new ArrayList<Cat>();
// object为animal的父类  ArrayList<? extends Animal> lis10 = new ArrayList<Object>();//? super E  向上限定,E及其父类ArrayList<? super Animal> list11 = new ArrayList<Animal>();ArrayList<? super Animal> list13 = new ArrayList<Object>();
//        ArrayList<? super Animal> list12 = new ArrayList<Dog>();}
}
泛型类把泛型定义在类上格式:public class 类名<泛型类型1,…>注意:泛型类型必须是引用类型
这里的<>里面的内容仅仅表示的使一种参数数据类型,参数类型是一种变量
既然是一种变量,就要符合变量的命名规则,可以使任意符合标识符起名字规则的名字。一般情况下,在定义的时候,习惯用一个大写字母表示。
public class GenericTool1<T> {private T obj;public T getObj(){return obj;}public void setObj(T obj){this.obj = obj;}}
泛型方法把泛型定义在方法上格式:public <泛型类型> 返回类型 方法名(泛型类型 .)
public class GenericTool2 {
//    public void show(String s){
//        System.out.println(s);
//    }
//
//    public void show(int i){
//        System.out.println(i);
//    }
//
//    public void show(double d){
//        System.out.println(d);
//    }//用泛型方法改进,将来不确定要传入什么类型的数据public <F> void show(F f){System.out.println(f);}}
/*泛型类的测试*/
public class GenericTest1 {public static void main(String[] args) {//如果不加泛型,默认使Object类型(创建对象调用方法)
//        GenericTool1 gt1 = new GenericTool1();
//        gt1.setObj("hello");
//        gt1.setObj(20);
//        gt1.setObj(12.34);GenericTool1<String> gt2 = new GenericTool1<>();gt2.setObj("hello");
//        gt2.setObj(20);String obj = gt2.getObj();}
}
用泛型改后的代码测试
public class GenericTest2 {public static void main(String[] args) {GenericTool2 genericTool2 = new GenericTool2();genericTool2.show("hello");genericTool2.show(10);genericTool2.show(12.34);}
}

java实用技巧---泛型相关推荐

  1. 一些Java实用技巧(量变转变为质变后会单独整理出来)

    [Java包]------------------------------------ Collection 接口是 List.Set 和 Queue 接口的父接口,通常情况下不被直接使用. [jav ...

  2. java swing总结,Java 实用经验总结 Swing 篇

    Java 实用经验总结 Swing 篇 Java 实用经验总结 --Swing 篇 前言 本文前言部分为我的一些感想,如果你只对本文介绍的 Java 实用技巧感兴趣,可以跳过前言直接看正文的内容. 本 ...

  3. Java 8 - 日期和时间实用技巧

    Java 8 – 日期和时间实用技巧 当你开始使用Java操作日期和时间的时候,会有一些棘手.你也许会通过System.currentTimeMillis() 来返回1970年1月1日到今天的毫秒数. ...

  4. Java 性能调优的 11 个实用技巧

    大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情.这 ...

  5. java的wwe怎么玩_WWE2K18新手实用技巧介绍 WWE2K18新手怎么玩?-游侠网

    WWE2K18新手怎么玩?对于新手玩家来说,这代的游戏确实比较难,但这个难度并不是游戏内整体AI智能度的提高,而是因为设计的不平衡而导致的.接下来就为大家带来WWE2K18新手实用技巧介绍,刚刚入手的 ...

  6. 偏执却管用的 10 条 Java 编程技巧

    经过一段时间的编码(咦,我已经经历了将近20年的编程生涯,快乐的日子总是过得很快),我们开始感谢那些好习惯.因为,你知道- "任何可能出错的事情,最后都会出错." 这就是人们为什么 ...

  7. Java 编程技巧之数据结构

    Photo @markusspiske 文 | 常意 导读 唐宋八大家之一欧阳修在<卖油翁>中写道: 翁取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿.因曰:"我 ...

  8. 敲代码就是一把梭_2020必看!开发五年的大佬日常工作中所使用的java代码技巧...

    前言 罗列工作中实际使用的一些代码技巧或者叫工具类;知识无大小,希望大家都有收获 实用技巧 rpc服务出参统一化 什么,出参统一化有什么好说的????? 我不知道你们有没有遇到过多少五花八门的外部服务 ...

  9. Vim 实用技术,第 1 部分: 实用技巧

    0. Vim 简介 作为开源世界最重要的编辑器之一(另一个是 Emacs),Vim 以其强大的功能和可定制能力被众多开发者所喜爱.不过,也许就是因为 Vim 的功能太强大了,要真正用好 Vim 并不容 ...

最新文章

  1. 每年颁发两个图灵奖?
  2. 深度学习——你需要了解的八大开源框架
  3. 大总结-深度学习全五课-Stanford吴恩达教授
  4. windows server 2012 远程连不上_CVE20201350 | Windows DNS Server远程代码执行漏洞通告
  5. 2016.8.1今天是建军节
  6. C语言创建一个节点Node(附完整源码)
  7. J storm战队成员_DOTA2J.Storm战队介绍-DOTA2ESL孟买站预选赛J.Storm战队介绍_牛游戏网攻略...
  8. 牛客网【每日一题】 合集
  9. [原][歌曲]感动的歌曲排序
  10. 如何命令行结束react程序_想要成为前端Star 吗?一首歌时间将React / Vue 应用Docker 化...
  11. 信息学奥赛一本通(1203:扩号匹配问题)
  12. Django有办法打开HTTP长轮询连接吗?
  13. php中加载图片淡入淡出,jQuery做出图片滚动淡入淡出
  14. 尚硅谷大数据开发Day03
  15. 登记车架号/VIN码用车架号识别
  16. linux怎么添加跃点数,Windows 7修改静态路由表的跃点数
  17. canvas用于绘制视频
  18. 重装系统 linux启动windows系统文件,重装Windows系统后,Linux系统启动引导失败
  19. UEFI BIOS setup菜单之页面隐藏的方法
  20. 系统弱密码检查John

热门文章

  1. HDU - 5009 Paint Pearls dp + 链表 + 下界优化
  2. lego let‘s encrypt 证书
  3. 天地图一,加载天地图。
  4. Python操作visio画图
  5. 国标行政区划(五级)编码:省级、地级、县级、乡级和村级 sql文件
  6. matlab的ln函数表示,r软件中ln函数 r语言ln函数
  7. SpringMVC---共享域对象数据
  8. 【SpringBoot】33、SpringBoot+LayUI后台管理系统开发脚手架
  9. 基于SSM框架图书管理系统开发与设计(附源码资料)-毕业设计
  10. 在html5中居中如何定义,html上下居中代码怎么写