本文共 1612 字,大约阅读时间需要 5 分钟。
public static void main(String[] args) { Listlist1 = new ArrayList<>(); list1.add("1"); Object[] s1 = list1.toArray(); System.out.println(s1.length); for(Object m : s1){ System.out.println(m); } System.out.println("test2"); List list = new ArrayList<>(); String[] t ={"2","3"}; list.add("1"); String[] s = list.toArray(t); System.out.println(s.length); for(String m : s){ System.out.println(m); } }
结果
1 1 test2 2 1 null toArray重新建一个新数组长度为List 。 toArray(T[] a)重新建一个新数组长度为a的长度。数据为空的用null填充(原来的a数组数据会被覆盖)serialVersionUID适用于java序列化机制。简单来说,JAVA序列化的机制是通过判断类的serialVersionUID来验证的版本一致的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID于本地相应实体类的serialVersionUID进行比较。如果相同说明是一致的,可以进行反序列化,否则会出现反序列化版本一致的异常,即是InvalidCastException。
Transient 关键字的作用是控制变量的序列化,在变量声明前加上该关键字,可以阻止该变量被序列化到文件中,在被反序列化后,transient 变量的值被设为初始值,如 int 型的是 0,对象型的是 null。
若子类实现序列化 ,父类未实现 则 父类的字段不会进行序列化。
需要知道集合或数组的大小,而且需要是有序的,不然无法遍历;
需要先知道集合的类型,甚至是集合内元素的类型,即需要访问内部的成员,不能实现多态; 遍历时不能随时修改和删除集合的元素不需要知道集合或数组的大小
不需要知道集合或数组的大小
不需要先知道集合的类型 能随时修改和删除集合的元素1.链式结构可使用Iterator 、顺序结构可使用for
2.简单(基本)遍历foreach即可、如需使用角标可使用for、边遍历边更新要使用Iterator。publicT doSomething(T t) {....}
泛型的好处:
1.不需要做强制类型转换 2.编译时更安全。如果使用Object类的话,你没法保证返回的类型一定是Foo,也许是其它类型。这时你就会在运行时得到一个类型转换异常(ClassCastException)转载地址:http://owepi.baihongyu.com/