文档介绍:第 12 章?泛型( Generics ) –泛型入门–泛型进阶语法没有泛型之前 public class BooleanFoo { private Boolean foo; public void setFoo( Boolean foo) { = foo; } public Boolean getFoo() { return foo; } } public class IntegerFoo { private Integer foo; public void setFoo( Integer foo) { = foo; } public Integer getFoo() { return foo; } }没有泛型之前 public class ObjectFoo { private Object foo; public void setFoo( Object foo) { = foo; } public Object getFoo () { return foo; } } ? Object 为最上层的父类别,所以用它来实现泛型( Generics )功能没有泛型之前 ObjectFoo foo1 = new ObjectFoo(); ObjectFoo foo2 = new ObjectFoo(); (new Boolean(true)); // 记得转换操作型态 Boolean b = (Boolean) (); (new Integer(10)); // 记得转换操作型态 Integer i = (Integer) (); ?转换型态时用错了型态 ObjectFoo foo1 = new ObjectFoo(); (new Boolean(true)); String s = (String) (); ClassCastException 定义泛型类别? 之后,针对泛型( Generics )设计的解决方案?使用<T> 用来宣告一个型态持有者名称 T public class GenericFoo <T> { private T foo; public void setFoo( T foo) { = foo; } public T getFoo() { return foo; } }定义泛型类别?可以使用角括号一并指定泛型类别型态持有者 T真正的型态 GenericFoo <Boolean> foo1 = new GenericFoo <Boolean> (); GenericFoo <Integer> foo2 = new GenericFoo <Integer> (); (new Boolean(true)); Boolean b = (); // 不需要再转换型态 (b); (new Integer(10)); Integer i = (); // 不需要再转换型态 (i); 定义泛型类别?型态或接口转换不再需要–省去恼人的 ClassCastException 发生?编译程序可以帮您作第一层防线 GenericFoo<Boolean> foo1 = new GenericFoo<Boolean>(); (new Boolean(true)); Integer i = (); // 传回的是 Boolean 型态 :7: patible types found : required: Integer i = (); 定义泛型类别?定义及创建对象时不一定需要指定型态, 默认会使用 Object 型态?编译时编译程序会提出警讯 GenericFoo foo3 = ne