泛型的优点
1、提高代码的重用性
2、防止类型转换异常,提高代码的安全性
泛型的分类
泛型用在类、接口和方法中时,他被称为泛型类、泛型接口、泛型方法
泛型类
泛型类的含义
把泛型定义在类上的被称为泛型类
泛型类的定义格式
public class 类名<泛型类型1,…>{
}
泛型类例子
public class Genericity<T>{
private T t;
public Genericity(T t){
this.t=t;
}
public T getT(){
return t;
}
public void setT(T t){
this.t=t;
}
}
public class test{
public static void main(String args[]){
Genericity<String> g=new Genericity<>("这是泛型类的测试");
System.out.println(g.getT());
Genericity<Integer> i=new Genericity<>(200);
System.out.println(i.getT());
}
}
泛型接口
泛型接口的含义
把泛型定义在接口上的被称为泛型接口
泛型接口的定义格式
public<泛型类型>返回类型 方法名(泛型类型 变量名){
}
- 注意:
- 方法声明中定义的形参只能在该方法里使用,而接口、类声明中定义的类型形参则可以在整个接口、类中使用。当调用fun()方法时,根据传入的实际对象,编译器就会判断出类型形参T所代表的实际类型。
泛型方法的例子
public interface Genericity<T>{
void show(T t);
}
public class StringShowImpl implements Genericity<String> {
@Override
public void show(String t) {
System.out.println(t);
}
}
public class InterShowImpl implements Genericity<Integer> {
@Override
public void show(Integer t) {
System.out.println(t);
}
}
public class test{
public static void main(String args[]){
Genericity<String> s=new StringShowImpl();
Genericity<Integer>i=new InterShowImpl();
s.show("我是泛型接口的测试");
i.show(200);
}
}
泛型方法
泛型方法含义
把泛型定义在方法上的被称为泛型方法
泛型方法的定义格式
修饰符<代表泛型的变量> 返回值类型 方法名(参数){}
泛型方法的例子
public class Genericitys {
public<T> T show(T t) {
System.out.println(t);
return t;
}
}
public class test{
public static void main(String args[]){
Genericitys genericitys=new Genericitys();
String s=genericitys.show("测试");
Integer i=genericitys.show(200);
System.out.println(s);
System.out.println(i);
}
}
泛型集合
public class Student {
String nameString;
int age;
public Student(String nameString,int age) {
this.nameString=nameString;
this.age=age;
}
public void setAge(int age) {
this.age = age;
}public void setNameString(String nameString) {
this.nameString = nameString;
}
public int getAge() {
return age;
}
public String getNameString() {
return nameString;
}
@Override
public String toString() {
return "Student [nameString=" + nameString + ", age=" + age + "]";
}
}
public class cs{
public static void main(String args[]){
ArrayList<Student> list=new ArrayList<Student>();
Student student=new Student("测试", 200);
list.add(student);
// list.add("测试"); 会报错
Iterator<Student> it=list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}