java中的泛型机制

java

  • 泛型

    这种语法机制,只在程序编译阶段起作用,只是给编译器参考的。(运行阶段泛型没用)

  • 使用了泛型好处是什么?

    第一:集合中存储的元素类型统一。

    第二:从集合中取出的元素类型是泛型指定的类型,不需要进行大量的向下转型。

  • 泛型的缺点是什么?

    导致集合中存储的元素缺乏多样性。

  • 代码示例:

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

public class Demo {

public static void main(String[] args) {

/*使用泛型List<Animal>之后,

表示List集合中只允许存储Animal类型的数据。

用泛型来指定集合中存储的数据类型。*/

List<Animal> list = new ArrayList<Animal>();

/*指定List集合中只能存储Animal,

那么存储String就编译报错了。这样用了泛型之后,

集合中元素的数据类型更加统一了。*/

list.add(new Animal());

list.add(new Cat());

/*这个表示迭代器迭代的是Animal类型。*/

Iterator<Animal> it = list.iterator();

while (it.hasNext()){

/*使用泛型之后,每一次迭代返回的数据都是Animal类型。*/

Animal a = it.next();

/*这里不需要进行强制类型转换,直接调用*/

a.move();

}

}

}

class Animal{

public void move(){

System.out.println("Animal move");

}

}

class Cat extends Animal{

public void move(){

System.out.println("Cat move");

}

}

输出:

  • 类型自动推断

    1、JDK8之后引入自动类型推断机制。(又称为钻石表达式)

    2、上面的第10行代码改为:

List<Animal> list = new ArrayList<>();

  • 自定义泛型

    1、自定义泛型的时候,<>尖括号中的是一个标识符,随便写。

    2、java源代码中经常出现的是:<E>和<T>,E是Element单词首字母。T是Type单词首字母。

    3、代码示例:

public class Demo<qwe>{

/*这里的qwe是标识符,随便写*/

public void dosome(qwe o){

System.out.println(o);

}

public static void main(String[] args) {

Demo<String> demo = new Demo<>();

demo.dosome("aaa");

Demo<Integer> demo1 = new Demo<>();

demo1.dosome(123);

}

}

输出:

以上是 java中的泛型机制 的全部内容, 来源链接: utcz.com/389929.html

回到顶部