java泛型的例子与理解
来源:互联网 发布:nginx静态代理 编辑:程序博客网 时间:2024/06/05 02:16
首先,为什么会出现泛型。这个动机就是如果是类型错误,那么在编译的时候就会被捕获,而不是运行时当作ClassCastException在debug里面出现,所以将类型的检查从运行时移到编译时,有助于找到程序中的错误,提高程序的可靠性。
泛型使用在3个地方,类、接口、方法的创建中,相对应的为泛型类、泛型接口、泛型方法。也就是说泛型是对于类型的通用性。不能将多态的概念混淆进来,二个没有直接的关系,一个是针对对象的,泛型是针对类的。
接下来是关于泛型概念的几个例子,涵盖了泛型的应用。
1.泛型类和泛型的构造
/** * 泛型类 * * @author Administrator * * @param <T> * name * @param <V> * age */public class Person<T, V> {private T name;private V age;/** * 泛型类的构造方法定义 */public Person(T name, V age) {this.name = name;this.age = age;}public Person() {}public T getName() {return name;}public void setName(T name) {this.name = name;}public V getAge() {return age;}public void setAge(V age) {this.age = age;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}}2.泛型方法
/** * p是传入进来的,那么在创建p对象的时候,已经有了具体的类型,那么在这边还不知道p中的类型,那么用?去通配 * @param p */public static void function(Person<?, ?> p) {System.out.println(p.toString());}
泛型上限
/** * 泛型上限 * @param p */public static void function(Person<? extends String, ? extends Integer> p) {System.out.println(p.toString());}泛型下限
/** * 泛型下限 * @param p */public static void function(Person<? super String, ? super Integer> p) {//此处时能用String或者objectSystem.out.println(p.toString());}
main函数
public static void main(String[] args) {Person<String, Integer> p = new Person<String, Integer>("kwj", 24);function(p);}
3.泛型接口
</pre><pre name="code" class="java">public interface DoSomething<T> {void doSomething(T t);}结果
public class Play<T> implements DoSomething<T> {@Overridepublic void doSomething(T t) {System.out.println(t.getClass() + "~~~~~" + t.toString());}public static void main(String[] args) {Play<String> p = new Play<String>();p.doSomething("i am String");}}另一种写法
public class Play implements DoSomething<String> {public static void main(String[] args) {Play p = new Play();p.doSomething("i am String");}@Overridepublic void doSomething(String t) {<pre name="code" class="java"> System.out.println(t.toString());}}
0 0
- java泛型的例子与理解
- Java 泛型的理解与深入
- Java 泛型的理解与总结
- 一个理解wait()与notify()的例子
- 一个理解wait()与notify()的例子
- 一个理解wait()与notify()的例子
- 一个理解wait()与notify()的例子
- 一个理解wait()与notify()的例子
- 一个理解wait()与notify()的例子
- 一个理解wait()与notify()的例子
- 一个理解wait()与notify()的例子
- 一个理解wait()与notify()的例子
- 一个理解wait()与notify()的例子
- 一个理解wait()与notify()的例子
- 理解wait()与notify()的例子
- 一个理解wait()与notify()的例子
- 一个理解wait()与notify()的例子
- verilog中阻塞的理解与例子
- 在亚信的新生活
- ios中用UIview做一个简单的联系人列表的思路
- 《大话》之 中介者模式
- JAVA 调用SAP端接口
- poj 3070 Fibonacci
- java泛型的例子与理解
- SAP ABAB编程 内表按需求的字段汇总
- 我的第一篇博客
- 硬件加速的径向模糊
- SAP中删除打印假脱机请求
- 浅谈WEB页面提速(前端向)
- [01] 使用 MVC 5 的 EF6 Code First 入门 系列:建立一个EF数据模型
- SSH 使用WebService实例
- 关于TbSchedule任务调度管理框架的整合部署