泛型在集合中的应用

  泛型在集合经常能看到,有两个好处: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. 用sftp上传文件至linux服务器

    1.项目环境 框架:springmvc    项目管理工具:maven 2.必须使用的jar com.jcraft jsch 0.1.27 test 3.新建一个FileUpDown工具类,在类中添加 ...

  2. Fast data loading from files to R

    Recently we were building a Shiny App in which we had to load data from a very large dataframe. It w ...

  3. 拥抱Node.js 8.0,N-API入门极简例子

    本文摘录自<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. N-API简介 Node.js 8.0 在2017年6月份发布, ...

  4. Windows 7 蓝屏代码大全 & 蓝屏全攻略

    关于Windows 7.Vista等系统的蓝屏,之前软媒在Win7之家和Vista之家都有很多文章讨论过,但是都是筛选的常见的一些问题,今天这个文章是个大全,希望大家看着别头痛,文章收藏下来以后待查即 ...

  5. Java IO流之随机读写流RandomAccessFile

    随机读写流RandomAccessFile 简介 此类的实例支持对随机访问文件的**读取和写入**. 随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组. 存在指向该隐含数组的光标或索引 ...

  6. 4.Node.js 微信消息管理

    一.写在前面的话   当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应.   消息推送也是 ...

  7. Spring+SpringMVC+MyBatis深入学习及搭建(十)——MyBatis逆向工程

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6973266.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(九)--My ...

  8. 基于redis实现tomcat8及以上版本的tomcat集群的session持久化实现(tomcat-redis-session-manager二次开发)

    前言: 本项目是基于jcoleman的tomcat-redis-session-manager二次开发版本 1.修改了小部分实现逻辑 2.去除对juni.jar包的依赖 3.去除无效代码和老版本tom ...

  9. 不完全翻译:Threading in C#-Getting Started

    Introduction(引入,介绍) and Concepts(概念) 原文地址:http://www.albahari.com/threading/ 注:水平有限不能全文翻译,备注了个别字段和短句 ...

  10. JS学习笔记——数组去重

    <script type="text/javascript"> //indexOf"是ECMAScript5方法,IE8以下不支持,需多写兼容低版本浏览器代码 ...