第12章 泛型( Generics) 泛型入门 泛型进阶语法
第12章 • 泛型(Generics) – 泛型入门 – 泛型进阶语法
泛型之前 public class booleanFoo private Boolean fooi public void setFoo(Boolean foo) this foo =foo; public Boolean getFoo( return foo public class IntegerFoo i private Integer foo public void set Foo(Integer foo ) i this. fo fo public Integer getFoo ( return foo
没有泛型之前 public class BooleanFoo { private Boolean foo; public void setFoo(Boolean foo) { this.foo = foo; } public Boolean getFoo() { return foo; } } public class IntegerFoo { private Integer foo; public void setFoo(Integer foo) { this.foo = foo; } public Integer getFoo() { return foo; } }
没有泛型之前 Object为最上层的父类别,所以用它来实现 泛型( Generics)功能 public class objectFoo private object fooi public void set Foo(object foo) f this. foo foo public objectgetFoo() return foo
没有泛型之前 public class ObjectFoo { private Object foo; public void setFoo(Object foo) { this.foo = foo; } public ObjectgetFoo() { return foo; } } • Object为最上层的父类别,所以用它来实现 泛型(Generics)功能
没有泛型之前 ObjectFoo fool = new objectFoo()i ObjectFoo foo2 new objectFoo( fool. setFoo(new Boolean(true))i //记得转换实现类型 Boolean b =(Boolean) fool. getFoo(i foo2 setFoo (new Integer(10))i //记得转换实现类型 Integer i =(Integer) foo2 getFoo o)i 转换型态时用错了型态 ObjectFoo fool new objectFoo ()i fool. setFoo(new Boolean(true))i String s=(String) fool. getFoo ()i ClassCastException
• 转换型态时用错了型态 没有泛型之前 ObjectFoo foo1 = new ObjectFoo(); ObjectFoo foo2 = new ObjectFoo(); foo1.setFoo(new Boolean(true)); //记得转换实现类型 Boolean b =(Boolean) foo1.getFoo(); foo2.setFoo(new Integer(10)); //记得转换实现类型 Integer i =(Integer) foo2.getFoo(); ObjectFoo foo1 = new ObjectFoo(); foo1.setFoo(new Boolean(true)); String s = (String) foo1.getFoo(); ClassCastException
定义泛型类别 J2SE50之后,针对泛型( Generics)设计 的解决方案 使用<T>用来声明一个型态持有者名称T public class GenericFoo<r> private T fooi public void set Foo(t foo)I this. foo fooi public t getFoo()( return foo
定义泛型类别 • J2SE5.0之后,针对泛型(Generics)设计 的解决方案 • 使用<T>用来声明一个型态持有者名称T public class GenericFoo<T> { private T foo; public void setFoo(T foo) { this.foo = foo; } public T getFoo() { return foo; } }