您的位置:首页 > 编程语言 > Java开发

008 The Generics In JAVA

2015-10-27 17:14 381 查看
泛型是JAVA的核心特型之一,我们先看一个例子:

没有使用泛型前,如下:

import java.util.ArrayList;
import java.util.List;

public class GenericsStu {
public static void main(String[] args) {

List list = new ArrayList();
String name = "gavin";
Integer age = 5;
list.add(name);
list.add(age);

for (Object obj : list) {
String str = (String) obj; // Exception in thread "main"
// java.lang.ClassCastException:
// java.lang.Integer cannot be cast to
// java.lang.String
}
}
}


使用泛型后如下:

import java.util.ArrayList;
import java.util.List;

public class GenericsStu {
public static void main(String[] args) {

List<String> list = new ArrayList<String>();
String name = "gavin";
Integer age = 5;
list.add(name);
list.add("hello");
list.add(age);//这个在编译时就提示类型不匹配,如果用的是eclipse,会及时显示错误,避免了运行时异常。

for (String str : list) {
System.out.println(str);

}
}
}


泛型也可以用于Class,例如:

使用泛型前,是这样的:

public class GenericsStu {

private Object t;

public Object get() {
return t;
}

public void set(Object t) {
this.t = t;
}

public static void main(String args[]){
GenericsStu type = new GenericsStu();
type.set(2);
String str = (String) type.get(); //Exception in thread "main" java.lang.ClassCastException:
//java.lang.Integer cannot be cast to java.lang.String
System.out.println(str);
}
}


使用泛型后,是这样的:

public class GenericsStu<T> {

private T t;

public T get(){
return this.t;
}

public void set(T t){
this.t=t;
}

public void print(){
System.out.println(t);
}

public static void main(String args[]){
GenericsStu<String> type = new GenericsStu<String>();
type.set("gavin");
type.print();//Output is:gavin
type.set(2);  //编译就不通过,避免了运行时java.lang.ClassCastException
type.print();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: