008 The Generics In JAVA
泛型是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的更多相关文章
- thinking in java Generics Latent typing
The beginning of this chapter introduced the idea of writing code that can be applied as generally a ...
- Java ConcurrentHashMap Example and Iterator--转
原文地址:http://www.journaldev.com/122/java-concurrenthashmap-example-iterator#comment-27448 Today we wi ...
- Thinking in Java——笔记(15)
Generics The term "generic" means "pertaining or appropriate to large groups of class ...
- Java深度历险(五)——Java泛型
作者 成富 发布于 2011年3月3日 | 注意:QCon全球软件开发大会(北京)2016年4月21-23日,了解更多详情!17 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件 ...
- 在Android中使用Java 8的lambda表达式
作为一名Java开发者,或许你时常因为缺乏闭包而产生许多的困扰.幸运的是:Java's 8th version introduced lambda functions给我们带来了好消息;然而,这咩有什 ...
- 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 ...
- [CareerCup] 14.4 Templates Java模板
14.4 Explain the difference between templates in C++ and generics in Java. 在Java中,泛式编程Generic Progra ...
- java基础之 泛型
泛型(Generic type 或者generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法 ...
- Java之泛型练习
package cn.itcast.generics; import java.util.Comparator; import java.util.Iterator; import java.util ...
随机推荐
- WinForm窗体拖动代码
本文转载自:http://www.cnblogs.com/ap0606122/archive/2012/10/23/2734964.html using System; using System.Co ...
- 转:Java学习路线图,专为新手定制的Java学习计划建议
转自:http://blog.csdn.net/jinxfei/article/details/5545874 怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业 ...
- MSSQL 随机查询且降序排列
--随机查询且降序排列 * FROM dbo.COMPANY_USER_INFO ORDER BY NEWID()) AS T ORDER BY T.cu_id DESC
- JS截取后缀名,文件全名,非后缀名的方法---收藏(冷饭_)
<script language="javascript" type="text/javascript"> //取整个文件的路径并且把文件名赋给文件 ...
- @property and retain, assign, copy, nonatomic解析
nonatomic vs. atomic - "atomic" is the default. Always use "nonatomic". I don't ...
- spring学习笔记(转)
[1]搭建环境 1.添加jar包 使用spring需要 sring.jarcommons-loggin.jar 如果使用aop组件需要 aspectjweaver.jaraspectjrt.jar 如 ...
- 两分钟彻底让你明白Android Activity生命周期(图文)!
大家好,今天给大家详解一下Android中Activity的生命周期,我在前面也曾经讲过这方面的内容,但是像网上大多数文章一样,基本都是翻译Android API,过于笼统,相信大家看了,会有一点点的 ...
- poj_2485_mst
Highways Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit St ...
- 手动编译Jsp文件
手动模拟Tomcat编译jsp文件 Tomcat编译jsp文件的配置路径是在%tomcat_home%/conf/web.xml中,有这样一段代码 <servlet> <servle ...
- C++14使用std::integer_sequence展开tuple作为函数的参数
元组是一种长度固定的允许有不同类型元素的集合,根据元素的个数不同又分别称作一元组.二元组.三元组等.C++11中标准库增加了一个叫std::tuple的类模板,用于表示元组. 下面的代码演示了使用C+ ...