1、Integer foo2=new GenericFoo private T1 Foo; private T2 FooArray; public T1 getFoo() public void setFoo(T1 foo) this.Foo = foo; public T2 getFooArray() return FooArray; public void setFooArray(T2 fooArray) this.FooArray = fooArray; GenericFoo g=new GenericFoo g.setFoo(new Integer(74); String str1=c,w
2、j; String str2=null; g.setFooArray(str1); str2=g.getFooArray(); System.out.println(g.getFoo(); for(int i=0;istr2.length;i+) System.out.println(str2i); /自己定义一个集合: private T objArr; private int index; public GenericFoo() objArr=(T)new Object10; public void add(T t) objArrindex+=t; public T get(int i)
3、return objArri;5; g.add(new Integer(i); Integer in=g.get(i); System.out.println(in);/应用在HashSetimport java.util.HashSet;import java.util.Iterator;import java.util.Set; Set set=new HashSet set.add(cwj);bb for(Iterator set1=new HashSet set1.add(new Person(zhangsan,20,tianjing);lisi,30,beijing iter=set
4、1.iterator(); Person person=iter.next(); String name=person.getName(); int age=person.getAge(); String adress=person.getAdress(); System.out.println(name+-+age+adress);class Person private String name; private int age; private String adress; public String getAdress() return adress; public void setAd
5、ress(String adress) this.adress = adress; public int getAge() return age; public void setAge(int age) this.age = age; public String getName() return name; public void setName(String name) this.name = name; public Person(String name,int age,String adress) this.name=name; this.age=age; this.adress=adr
6、ess; public int hashCode() final int PRIME = 31; int result = 1; result = PRIME * result + (adress = null) ? 0 : adress.hashCode(); result = PRIME * result + age; result = PRIME * result + (name = null) ? name.hashCode(); return result; public boolean equals(Object obj) if (this = obj) return true;
7、if (obj = null) return false; if (getClass() != obj.getClass() final Person other = (Person) obj; if (adress = null) if (other.adress != null) return false; else if (!adress.equals(other.adress) if (age != other.age) if (name = null) if (other.name !name.equals(other.name) return true;import java.ut
8、il.HashMap;import java.util.Map;public class Test Map map=new HashMap map.put(ccwwjj set=map.keySet(); String key=iter.next(); String value=map.get(key); System.out.println(key+ : +value);-Map.Entry set1=map.entrySet(); Map.Entry entry=iter.next(); String key=entry.getKey(); String value=entry.getVa
9、lue();限制泛型可用类型:在定义泛型类别时,预设可以使用任何的类型来实例化泛型类型中的类型,但是如果想要限制使用泛型类别时,只能用某个特定类型或是其子类型才能实例化该类型时,可以在定义类型时,使用extends关键字指定这个类型必须是继承某个类,或实现某个接口。当没有指定泛型继承的类型或接口时,默认使用T extends Object,所以默认情况下任何类型都可以作为参数传入。import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class ListGenericFoo pri
10、vate T FooArray; public T getFooArray() public void setFooArray(T fooArray) FooArray = fooArray; / ListGenericFoo list=new ListGenericFoo 这句就是错误的 ListGenericFooLinkedList list1=new ListGenericFoo ArrayList array=new ArrayList10; list.setFooArray(array); LinkedList linked=new LinkedList10; list1.setF
11、ooArray(linked);类型通配声明:现在有这么一个要求,希望有一个参考名称foo可以接受所以下面的实例:list=new ListGenericFoo list=new ListGenericFoo简单的说,实例化类型持有者时,它必须是实现List的类别或其子类别,要定义这样一个名称,可以使用?通配字元,并使用extends关键字限定类型持有者的形态。 eg:ListGenericFoo list=null;通常当 时写作 For-Each循环: 主要用于简化集合、数组的遍历。语法: for(type element:array) System.out.println(element
12、).element是变量,array代表数组或集合引用的名字 int amount=1,2,; /旧式的for遍历amount.length; System.out.println(amounti);- /新式的for遍历,增强的for循环 for(int element:amount) System.out.println(element);- String words=helloworld for(String english:words) System.out.println(english); /对二维数组的遍历 int array=1,2,3,4; for(int row:array
13、) /此处里面的是int,数组的方括号别忘了,先遍历行 for(int line:row) System.out.println(line); -下列是集合的3种遍历 List list=new ArrayListInteger)自动拆箱:包装类自动转为基本类型.(Integerint)import java.util.Collection; int a=4; Collection cwj=new ArrayList cwj.add(new Integer(74); /原本的方法 cwj.add(74); /JDK1.5的新特性,自动装箱,将int类型的3转换为Integer cwj.add(
14、a+70); /将a+70的值int类型的74转换为Integer类型 for(Integer i:cwj) System.out.println(i);可变参数(Varargs): 可变参数使程序员可以声明一个接受可变数目参数的方法。注意:可变参数必须是方法声明中的最后一个参数,即一个方法不可能具有两个或两个以上的可变参数。可变参数本质上就是一个数组,对于某个声明了可变参数的方法来说,我们既可以传递离散的值,也可以传递数组对象。但如果将方法中的参数定义为数组,那么只能传递数组对象而不能传递离散的值。 private static int sum(int. nums) int sum=0; f
15、or(int numbers:nums) sum+=numbers; return sum; int result=sum(new int1,2); System.out.println(result); result=sum(3,4);枚举(Enums-enumeration的缩写):JDK1.5引入枚举类型,使用关键字enum,我们可以这样定义一个枚举类型:public enum ColorRed,White,Blue /Color枚举类型有此3个实例,对象。然后可以这样来使用 Color myColor=Color.red枚举类型还提供了2个有用的静态方法values( )和valueO
16、f( )。 Color myColor=Color.Gree; System.out.println(myColor);- for(Color color:Color.values() System.out.println(color);enum Color Gree,Blue,Red / 枚举成员,也代表3个实例,对象运行结果:定义枚举类型本质上就是在定义一个类别,只不过很多细节由编译器帮你完成了,所以某些程度上,enum关键字的作用就像是class或interface,我们所定义的每个枚举类型都继承自java.lang.Enum类,枚举中的每个成员默认都是public final,且是st
17、atic的,所以你可以通过 类名.枚举成员名 直接使用它们。而每个枚举的成员其实就是你定义的枚举类型的一个实例(Instance),换句话说,当定义了一个枚举类型后,在编译时刻就能确定该枚举类型有几个实例,分别是什么。在运行期间我们无法再使用该枚举类型创建新的实例了,这些实例在编译期间就已经完全确定下来了。public enum Coin /* * Coin枚举的3个对象,下面有Coin的有字符串参数的构造方法,所以这3个实例都传进了字符串值,要用括号括起来 * 3个对象,每个对象都维护着一个value值,Coin构造方法就是给value赋值 hs(haha),cwj(menghuan),abc(xiyou public String value; public Strin
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1