62,620
社区成员
发帖
与我相关
我的任务
分享
import java.util.*;
public class Test2 {
public static void main(String[] args) {
List<A> la = new ArrayList<A>();
la.add(new A());
Object o = la;
List<Date> ld = (List<Date>)o;
System.out.println(ld.get(0));
List<String> ls = (List<String>)o;
System.out.println(ls.get(0));
}
}
class A {
public String toString() { return "A"; }
}
//这里明确了list中的对象为A的实例
List<A> la = new ArrayList<A>();
la.add(new A());
//list是Object的的子类,所以可以制动转换类型。
Object o = la;
//虽然上面的list被转换成了object,即被抽象成了它的父类Object类型,list原有属性和方法不能再通过原有方法访问,但这些属性行为并没有丢失,它仍然可以被转换回原来的list<A>对象或list<? extends A>其父类对象。
List<Date> ld = (List<Date>)o;
System.out.println(ld.get(0));
List<String> ls = (List<String>)o;
System.out.println(ls.get(0));
lz要明确List<Date>、List<A>、List<String>这些list中存放的对象是不同类型的,且没有子父关系,是不能直接强制转换的。