【java】泛型和类型安全的容器ArrayList
来源:互联网 发布:linux 添加永久路由 编辑:程序博客网 时间:2024/05/17 09:17
ArrayList or ArrayList<Apple>
不使用泛型:
Java中的ArrayList 容器,在没有应用泛型的时候也可以使用,编译时不做检查。
容器里面存储的是对象的引用,在使用get() 方法取出的对象是Object引用,所以要手动强制类型转换才可以应用具体类的方法。
package source.gohome02;import java.util.ArrayList;class Apple {private static long counter ;private final long id = counter++;public long id() { return id; } }class Orange {}public class ApplesAndOrangesWithoutGenerics {public static void main(String[] args) {ArrayList apples = new ArrayList();for(int i = 0; i < 3; i++)apples.add(new Apple());apples.add(new Orange());//run-time errorfor(int i = 0; i < apples.size(); i++)System.out.println(((Apple)apples.get(i)).id());}}output:
使用泛型:
能够在编译时检查类型错误,利用get()方法取出的对象也不再是Object引用,编译器可以认识此类型。
package source.gohome02;import java.util.ArrayList;public class ApplesAndOrangesWithGenerics {public static void main(String[] args) {ArrayList<Apple> apples = new ArrayList<Apple>();for(int i = 0; i < 3; i++)apples.add(new Apple());//apples.add(new Orange());compile-time errorfor(int i = 0; i < apples.size(); i++)System.out.println(((Apple)apples.get(i)).id());for(Apple a: apples)System.out.println(a.id());}}output:
并且,支持向上转型。也就是说,该类的导出类对象均可以存储在此容器中,支持所有操作。
package source.gohome02;import java.util.ArrayList;class GrannySmith extends Apple {}class Gala extends Apple {public String toString() {return "Gala"; }}class Fuji extends Apple {public String toString() {return "Fuji"; }}public class GenericsAndUpcasting {public static void main(String[] args) {ArrayList<Apple> apples = new ArrayList<Apple>();apples.add(new Apple());apples.add(new GrannySmith());apples.add(new Gala());apples.add(new Fuji());for(Apple a : apples)System.out.println(a);//程序的输出是从Object默认的toString()方法产生的,如果没有重载//类名 + 该对象的散列码}}output:
0 0
- 【java】泛型和类型安全的容器ArrayList
- JAVA中泛型和类型安全的容器
- Java 类型安全的异构容器
- 第11章持有对象 _11.1泛型和类型安全的容器
- JAVA泛型容器的类型检查
- 从头认识java-9.1 类型安全的容器
- java--容器---ArrayList的删除
- ArrayList最基本的容器类型
- Java 容器中Vector、ArrayList和LinkedList 的区别
- java容器之三_Vector和ArrayList的区别
- 十一章:持有对象(1、范型和类型安全的容器)
- Arraylist<类型> 容器
- JAVA arraylist的线程安全
- Java容器之ArrayList、LinkedList和Vector
- 类型安全的异构容器
- java 的容器线程安全
- Java容器的线程安全
- java容器的线程安全
- Android在诸如editText等组件设置输入法半屏幕显示的说明
- Windows 内存泄漏检测工具——LeakDiag 详解
- JavaScript对象系统深入剖析-2.函数对象
- Java程序在linux下运行<转>
- brctl命令
- 【java】泛型和类型安全的容器ArrayList
- PHP判断两个日期之间相差多少个月份
- JavaScript对象系统深入剖析3-创建对象Object.Create
- memcached完全剖析–1. memcached的基础
- test
- c# WinForm中如何判断关闭事件来源于用户点击右上角的“关闭”按钮
- 计算机网络学习--udp学习
- JavaScript对象系统深入剖析-4.Scope和Closure(闭包
- python中,花括号,中括号,小括号的区别