T在定义是表示任意类型,自定义泛型方法时,传入的参数为任意类型,返回值为参数类型的最大公约数
如:
- class Demo{
- public static void main(String[] args){
- Number x = add(3.5,3);
- Object y = add(3,"abc");
- }
- public static <T> T add(T x,T y){
- return null;
- }
- }
复制代码
为了让不同方法可以操作不同类型 而且类型还不确定
那么可以将泛型定义在方法上
如果类的实例对象中的多处都要用到同一个泛型参数,即这些地方引用的泛型类型要保持同一个实际类型时,这时候就要采用泛型类型的方式进行定义,也就是类级别的泛型,语法格式如下:
- public class GenericDao<T> {
- private T field1;
- public void save(T obj){}
- public T getById(int id){}
- }
复制代码
类级别的泛型是根据引用该类名时指定的类型信息来参数化类型变量的,如:
GenericDao<String> = null;
new GenericDao<String>();
当使用通配符时,参数值可以是任意的类型,不是<T>在参数实例化后,只能使用T所表示的类型。
使用?通配符可以引用其他各种参数化的类型,?通配符定义的变量主要用作引用,可以调用与参数化无关的方法,不能调用与参数化有关的方法。
|