简单泛型、泛型方法、泛型类、泛型接口的知识点

    xiaoxiao2025-06-10  38

    有许多原因促成了泛型的出现,其中最引人注目的就是创造容器类。

    泛型的主要目的就是为了用来指定容器要持有什么类型的对象

    一、简单泛型

    public class Genericity { public static void main(String[] args) { // TODO 自动生成的方法存根 List list=new ArrayList(); list.add(new Cat()); list.add(new Dog()); } } class Cat{} class Dog{} 在List集合中,可以持有不同类型的对象,但是编译器会报警告(ArrayList 是原始类型。应该将对通用类型 ArrayList<E> 的引用参数化),这里就提示我们需要给出一个具体的泛型,来约束容器的持有对象,提高安全性。 public class Genericity { public static void main(String[] args) { // TODO 自动生成的方法存根 List<Cat> list=new ArrayList<>(); list.add(new Cat()); list.add(new Dog()); } } class Cat{} class Dog{} 在这个代码中,list.add(new Dog());这行就会报错,原因是加入了泛型,只能添加泛型的对象或其泛型的子类对象。

    二、泛型方法

    泛型方法跟加个Object修饰输入参数基本效果相同:

    public class Genericity { public static void main(String[] args) { // TODO 自动生成的方法存根 Cat cat=new Cat(); Dog dog=new Dog();   Genericity.run( cat); <pre name="code" class="java"> Genericity.run( dog); }public static<T> void run(T A){System.out.println(A);}}class Cat{} class Dog{}

    只是推荐使用泛型这种方式。

    三、泛型类

    当我们不清楚要具体使用什么类时,与其用Object,我们更喜欢使用暂定不指定类型,在这里我们就需要使用到泛型类了

    public class Genericity { public static void main(String[] args) { // TODO 自动生成的方法存根 Person<Man> man=new Person<>(new Man()); man.getPerson(); } } class Man{ } class Person<T>{ private T person; public Person(T person){ this.person=person; } public T getPerson() { return person; } public void setPerson(T person) { this.person = person; } } 需要值得注意的是,在实例化泛型类时,必须给泛型确定类,不然将会报错。

    四、在泛型接口中

    泛型接口的使用跟泛型类基本没有什么区别,并且在工厂方法设计模式中也会用到。

    转载请注明原文地址: https://ju.6miu.com/read-1299793.html
    最新回复(0)