泛型是JAVA的核心特型之一,我们先看一个例子:

没有使用泛型前,如下:

import java.util.ArrayList;
import java.util.List; public class GenericsStu {
public static void main(String[] args) { List list = new ArrayList();
String name = "gavin";
Integer age = 5;
list.add(name);
list.add(age); for (Object obj : list) {
String str = (String) obj; // Exception in thread "main"
// java.lang.ClassCastException:
// java.lang.Integer cannot be cast to
// java.lang.String
}
}
}

使用泛型后如下:

import java.util.ArrayList;
import java.util.List; public class GenericsStu {
public static void main(String[] args) { List<String> list = new ArrayList<String>();
String name = "gavin";
Integer age = 5;
list.add(name);
list.add("hello");
list.add(age);//这个在编译时就提示类型不匹配,如果用的是eclipse,会及时显示错误,避免了运行时异常。 for (String str : list) {
System.out.println(str); }
}
}

泛型也可以用于Class,例如:

使用泛型前,是这样的:

 public class GenericsStu {

     private Object t;

     public Object get() {
return t;
} public void set(Object t) {
this.t = t;
} public static void main(String args[]){
GenericsStu type = new GenericsStu();
type.set(2);
String str = (String) type.get(); //Exception in thread "main" java.lang.ClassCastException:
//java.lang.Integer cannot be cast to java.lang.String
System.out.println(str);
}
}

使用泛型后,是这样的:

 public class GenericsStu<T> {

     private T t;

     public T get(){
return this.t;
} public void set(T t){
this.t=t;
} public void print(){
System.out.println(t);
} public static void main(String args[]){
GenericsStu<String> type = new GenericsStu<String>();
type.set("gavin");
type.print();//Output is:gavin
type.set(2); //编译就不通过,避免了运行时java.lang.ClassCastException
type.print(); }
}

008 The Generics In JAVA的更多相关文章

  1. thinking in java Generics Latent typing

    The beginning of this chapter introduced the idea of writing code that can be applied as generally a ...

  2. Java ConcurrentHashMap Example and Iterator--转

    原文地址:http://www.journaldev.com/122/java-concurrenthashmap-example-iterator#comment-27448 Today we wi ...

  3. Thinking in Java——笔记(15)

    Generics The term "generic" means "pertaining or appropriate to large groups of class ...

  4. Java深度历险(五)——Java泛型

      作者 成富 发布于 2011年3月3日 | 注意:QCon全球软件开发大会(北京)2016年4月21-23日,了解更多详情!17 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件 ...

  5. 在Android中使用Java 8的lambda表达式

    作为一名Java开发者,或许你时常因为缺乏闭包而产生许多的困扰.幸运的是:Java's 8th version introduced lambda functions给我们带来了好消息;然而,这咩有什 ...

  6. Effective Java Index

    Hi guys, I am happy to tell you that I am moving to the open source world. And Java is the 1st langu ...

  7. [CareerCup] 14.4 Templates Java模板

    14.4 Explain the difference between templates in C++ and generics in Java. 在Java中,泛式编程Generic Progra ...

  8. java基础之 泛型

    泛型(Generic type 或者generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法 ...

  9. Java之泛型练习

    package cn.itcast.generics; import java.util.Comparator; import java.util.Iterator; import java.util ...

随机推荐

  1. 在VS2008环境下的C++异常处理

    在写DAServer的过程中,一直在重视报文逻辑处理,却没有认认真真地去思考异常处理的问题.曾经我发现我在所有的报文处理函数中均没有考虑报文长度的问题,让我内心不由地捏了一把冷汗.我在新增的故障录波及 ...

  2. PXE-无人值守安装

    [root@rhel6 ~]# cp /root/ks.cfg /var/ftp/ks.cfg [root@rhel6 ~]# cat ks.cfg #platform=x86, AMD64, 或 I ...

  3. php 安装shpinx扩展

    cd /home/packages wget http://sphinxsearch.com/files/sphinx-0.9.9.tar.gz tar xzvf sphinx-0.9.9.tar.g ...

  4. 剑指offer系列41---数字在数组中出现的次数

    [题目]统计一个数字在排序数组中出现的次数. package com.exe9.offer; /** * [题目]统计一个数字在排序数组中出现的次数. * @author WGS * */ publi ...

  5. Linux From Scratch [1]

    0. 首先解释下build, host和target build:编译过程运行在build上 host:编译出来的东西运行在host上 target:运行在host上的编译器编译出来的东西运行于tar ...

  6. 【转】T-SQL 教程

    USE [test] GO /****** Object: StoredProcedure [dbo].[PageIndex] Script Date: 12/07/2011 10:26:36 *** ...

  7. 黄聪:PHP字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、切割成数组等)

    一.字符串替换 str_replace("iwind", "kiki", "i love iwind, iwind said"); 将输出 ...

  8. 黄聪:如何删除wordpress登录之后wp_footer、wp_head自行加载的Open Sans字体、fonts.googleapis.com连接导致卡死的问题

    有时候在浏览自己的WordPress网站时,发现网页长时间无响应, 卡在正在连接到fonts.googleapis.com ,如下图所示: 查看网页源码时,发现Head里面有如下一段代码: <l ...

  9. C#数字千分位问题

    1.C#中用最简单的方法把数字(不含小数)转换为千分位格式:     如1234567变成1,234,567 方法:1234567.ToString("###,###")   或  ...

  10. spring2.5整合hibernate3.0整合Struts

    首先:这是spring framework+hibernate+struts集成,spring主要用于aop和ioc,hibernate主要是用于持久层,struts主要是用于mvc. 同时关于spr ...