10,泛型

泛型

为什么使用泛型:

1保证数据一致性

2避免强转出错

3避免数据类型不一致的问题

4操作统一化

泛型格式:<无意义的字符> 一般放 <T> <E> <?>

泛型方法:

如果一个方法使用了泛型,会让该方法具有普适性。

语法格式4中:

权限修饰符 [static] <无意义的字符占位> 返回值类型 方法名字(T t) {return t;}

有返回值,有参数.

权限修饰符 [static] <无意义的字符占位> void 方法名字(T t){}

有参无返回值

权限修饰符 [static] <无意义的字符占位> T 方法名字(){}

无返回值有参数(这种没有意义)

权限修饰符 [static] <无意义的字符占位> void 方法名字(){}

无参无返回值

泛型类

语法格式:

class 类名 <无意义的占位符> {

}

1.在类名的后面加<T> 声明了一个类带有泛型的类

2.在实例化对象的时候,确定了泛型的数据类型

3.方法中如果带有泛型的时候,一定使用的是类带有泛型的类型

4.静态方法和类声明的泛型没有任何关系(

//一个类下面可以有静态方法。 //对象的创建的时候才确定泛型的类型。静态方法早于对象的创建 的 //所以静态方法中使用泛型的时候,和类定义的泛型没有关系 public static <E> void testStatic (E e) { System.out.println(e); }

5.泛型类的成员泛型方法两种写法的区别(

public <T> void printArgs(T t) {}//这种写法类的泛型和成员方法的泛型 没有任何关系

public void printArgs(T t) {}//这种写法泛型类是什么类型方法T就是什么类型

6.泛型类中也可以写普通的成员方法

自定义泛型在接口如何使用

语法格式:

interface 接口名字<T> {

}

实现类的各式:

class TestA<T> implements A<T>{}

剩下的该重写重写,和普通接口的用法一致

自定义泛型在抽象类中如何使用

语法格式:

public abstract 类名<T> {

}

继承格式:class 子类名<T> extends 父类名<T>{}

剩下的和普通的继承一样

上一篇:BFS/DFS/拓扑排序 模板题Python代码


下一篇:八数码难题——bfs(java)