泛型在集合中的应用

  泛型在集合经常能看到,有两个好处:1.把运行时出现 的问题提前至了编译时;2.避免了无谓的强制类型转换。

  用法:两边泛型的类型必须相同,可允许一边不写,只是为了兼容性,并不推荐。

 ArrayList<String> list = new ArrayList<String>();// true
//ArrayLsit<String> list = new ArrayList<Object>();//flase
//ArrayList<Object> list = new ArrayLsit<String>();//flase
ArrayList<String> list = new ArrayList<>();// true
ArrayList<> list = new ArrayList<String>();// true

泛型的分类

  泛型可以分为泛型方法,泛型类和泛型接口,其中泛型类和泛型接口最常用。

  泛型方法:在方法上的自定义泛型的具体数据类型是由调用该方法时传入的实参确定的。

public class Demo{
public static void main(String[] args) {
Integer i= print(123); // Integer
String str = print("abc");
} //<T> 把T字母声明为自定义的泛型、
public static <T> T print(T t){
return t;
}
}

  泛型类:在类上自定义的泛型的具体数据类型是在创建对象的时候指定的,如果没有指定,默认Object。

 class MyList<T>{

     Object[]  arr = new Object[10];

     int index = 0;

     public MyList(){

     }

     public void add(T o){
arr[index++] = o;
}
} public class Demo3 {
public static void main(String[] args) {
MyList<String> list= new MyList<String>();
list.add("123");
MyList list2 = new MyList();
new ArrayList<String>();
}
}

  泛型接口:在接口上自定义泛型的具体数据类型是在实现该接口的时候指定的,也可以在创建接口实现类对象的时候再指定接口自定义泛型,如果没有指定,默认Object。

 interface Dao<T>{

     public void add(T t);

     public void remove(T t);

 }

 public class Demo4<T>  implements Dao<T>{

     public static void main(String[] args) {
new Demo4<String>();
} @Override
public void add(T t) {
// TODO Auto-generated method stub } @Override
public void remove(T t) {
// TODO Auto-generated method stub }
}

Java自学手记——泛型的更多相关文章

  1. Java自学手记——struts2

    struts2框架 struts2是一种基于MVC模式的框架,是在struts1的基础上融合了xwork的功能. struts2框架预处理了一些功能: >请求数据自动封装, >文件上传的功 ...

  2. Java自学手记——Java中的关键字

    Java中的一些关键字对于初学者来说有时候会比较混乱,在这里整理一下,顺便梳理一下目前掌握的关键字. 权限修饰符 有四个,权限从大到小是public>protected>defaul(无修 ...

  3. Java自学手记——接口

    抽象类 1.当类和对象被abstract修饰符修饰的时候,就变成抽象类或者抽象方法.抽象方法一定要在抽象类中,抽象类不能被创建对象,如果需要使用抽象类中的抽象方法,需要由子类重写抽象类中的方法,然后创 ...

  4. Java自学手记——servlet3.0新特性

    servlet3.0出来已经很久了,但市场上尚未普遍应用,servlet3.0有三个比较重要的新特性:使用注解来代替配置文件,异步处理以及上传组件支持. 支持servlet3.0的要求:MyEclip ...

  5. Java自学手记——注解

    注意区分注释和注解,注释是给人看的,注解是给程序看的. 注解的作用是代替配置文件,在servlet3.0中,就可以不再使用web.xml文件,而是所有配置都是用注解!比如注解类 @WebServlet ...

  6. Java自学手记——集合

  7. Java自学手记——多态

    对象转型 学习多态前先明白一个叫对象转型的概念,如: class Animal{ void sleep(){ System.out.println("睡觉"); } } class ...

  8. 【转】JAVA自学之路

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

  9. JAVA自学笔记17

    JAVA自学笔记17 1.Map接口 1)概述 将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值.可以存储键值对的元素 2)与Collection接口的不同: ①Map是双列的 ...

随机推荐

  1. xml 和html 语言区别

    都是标记语言(ML),一个是超文本标记语言,一个是扩展标记语言. 不同之处: 1可扩展性:HTML不具备扩展性,而XML是原标记语言,可以用于定义新的标记语言. 2侧重点: HTML侧重于如何表现信息 ...

  2. Kotlin初探

    前几天看到新闻,Google将Kotlin语言作为Android应用开发的一级语言, 与Java并驾齐驱, 这则消息在开发界一下就炸开了锅( 好像平息的很快...)! 连Google的亲儿子go语言也 ...

  3. THE R QGRAPH PACKAGE: USING R TO VISUALIZE COMPLEX RELATIONSHIPS AMONG VARIABLES IN A LARGE DATASET, PART ONE

    The R qgraph Package: Using R to Visualize Complex Relationships Among Variables in a Large Dataset, ...

  4. Building Particle Filters and Particle MCMC in NIMBLE

    This example shows how to construct and conduct inference on a state space model using particle filt ...

  5. Git 使用记录

    在win7平台已经安装好了git的情况下: 1,Git 本地仓库建立与使用步骤: (2)新建立文件夹: $ mkdir learngit $ cd learngit $ pwd /Users/mich ...

  6. 汽车Vin码识别技术的由来到发展

    核心内容:汽车Vin码.汽车车架号.Vin码识别.汽车Vin码识别.车架号识别.汽车车架号识别 一.汽车Vin码识别应用背景 随着二手车产业链发展越来越强大,在汽车买卖以及后市场应用中,了解车辆的相关 ...

  7. storm定时任务【tick】

    一. 简介      storm作为流计算,处理数据通常以数据驱动.即只有当spout发射数据才会进行计算.那么如果想要做定时任务如何处理哪,例如有的bolt需要输出一段时间统计的结果,这里一段时间可 ...

  8. General Thread States

    对于实践中可能出现的各种General Thread States 以下列表描述了与常规查询处理关联的线程状态值,而不是更复杂的活动,例如复制. 其中许多仅用于在服务器中查找错误. after cre ...

  9. JSP/Servlet Web 学习笔记 DaySix —— EL表达式

    1)EL从scope中得到参数时可以自动转换类型,因此对于类型转换的限制更加宽松. 2)使用EL表达式,可以简化变量和对象的访问. 3)EL表达式必须以 ${XXXX} 来表示. 4)EL提供点(.) ...

  10. postgresql 多表联查

    使用语句的先后顺序并不是优先级的排序: 连接分为:内连接和外连接,外连接分为左外连接,右外连接,全连接 概念上解释,表之间联合后数据如何整合. 返回的数据条数,可以通过集合求算.假如A集合有10条数据 ...