java基础之泛型

  • 泛型的基本应用

1.泛型类定义

public class Point {
    private T t;

    Point(T t) {
        this.t = t;
    }
    private void setT(T t) {
        this.t = t;
    }

    private T getT() {
        return this.t;
    }
}

2.泛型对象的创建

public class DemoTest {
    public static void main(String[] args) {
        Point point= new Point(123);
    }
}

注意:

  1. 在创建泛型对象时,类型不能是基本的数据类型
  2. 在创建泛型对象时,最好知道对象的类型,避免出现泛型的安全警告

 

  • 泛型的通配符、受限泛型的上限和下限

通配符(?)

public static void fun1(Point t) {
     System.out.println(t.toString());
}

 通过在方法的参数中添加?通配符。使得这个方法的参数可以传递这个泛型的各种类型的对象

受限泛型的上限(extends)

public static void fun2(Point t) {
        System.out.println(t.toString());
}

通过extends 关键字,可以设置泛型的参数上限,传入的参数类型必须是Number或者Number的类。否则会报错。

受限泛型的下限(super)

public static void fun3(Point t) {
        System.out.println(t.toString());
}

通过super关键字,可以设置泛型的参数下限,传入的参数类型必须是Number或者Number的类。否则会报错。

 

  • 泛型与子类继承的限制

在泛型中,子类的泛型类是不能使用父类的泛型类型接收的。既:无法使用向上转型。

 

  • 泛型接口

泛型接口的定义

public interface Info {
}

泛型接口的实现

1.在实现类上声明泛型类型

public class InfoImpl implements Info {
    private T t;

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

2.在实现类上直接指定具体的类型

public class InfoImpl implements Info {
    public String getVar() {
        return "123123";
    }
}

 

  • 泛型方法

定义泛型方法

public  T fun4(T t){
        return t;
    }

注意:泛型方法可以在泛型类中,也可以在普通的类中。

通过泛型方法返回泛型类实例

public  Point fun(T t) {
        Point point = new Point(t);
        return point;
    }

使用泛型统一传入的参数类型

public static  void add(Info t1,Info t2){
        System.out.println(t1.getVar() + "" + t2.getVar());
    }

泛型数组

public class DemoArr {
    public static void main(String[] args) {
        String strArr[] = fun1("s1", "s2", "s3");
        fun2(strArr);
    }

    public static  T[] fun1(T... arg) {
        return arg;
    }

    public static  void fun2(T arr[]) {
        for (T t : arr) {
            System.out.println(t.toString());
        }
    }
}

 

你可能感兴趣的:(java,泛型,java基础)