java利用泛型写通讯录_Java实战开发篇-10 泛型

一、简介

泛型其实也是一种类型,通俗的讲就是任意类型

其关键字为<>,泛型广泛应用于集合,如之前的项目中写到的ArrayList<>就涉及到了泛型

在定义类或者接口的时候,不知道使用者需要哪种类型,就需要使用泛型

泛型可以定义类 接口 变量 方法等

二、泛型实例

1.泛型类

class Test{

//在定义的时候可以使用泛型来代表任意的类型

//但是在使用的时候(定义变量,创建对象)必须传递实际对象

E var1;//类里面有一个泛型变量,具体它是什么类型,使用的时候来决定

}

public class MyClass {

public static void main(String[] args){

Test test;//定义泛型变量

new Test();//创建对象

Testtest1 = new Test<>();//同时定义对象和声明具体的类型只需要在前面指定类型

test1.var1 = "jack";//此时var1就是String类型

System.out.println(test1.getClass());//打印结果为String

}

}

2.泛型接口

interface Itest{

void test(E e);//定义一个方法,方法的参数为泛型

}

//要使用接口就必须要实现接口里面的方法

//有两种方法实现

//1.单独创建一个类来实现其方法,使用的时候创建这个类的对象即可。创建类也有两种方法

//(1)指定接口的类型

class Mytest1 implements Itest{

public void test(String s){

}

}

//(2)指定当前类为泛型

class Mytest2 implements Itest{

public void test(E e){

}

}

public class MyClass {

public static void main(String[] args){

Itest Itest1 = new Mytest1();

Itest Itest2 = new Mytest2<>();

}

}

//使用匿名内部类实现

//public class MyClass {

// public static void main(String[] args){

// 第二种用法,创建一个匿名内部类来实现接口

// Itest Itest3 = new Itest() {

// @Override

// public void test(String s) {

// }

// };

// }

// }

3.泛型方法

//如果本身就是泛型类,不用使用泛型方法

//必须在方法前使用来表示需要使用泛型

class Father{

public void test(E e){

System.out.println(e);

}

}

public class MyClass {

public static void main(String[] args){

Father father = new Father();

father.test("jack");

}

}

三、“?”通配符

在使用泛型时都还不确定到底需要什么类型,就可以使用?来表示任意类型

class Universal{

public void showList(List> list){

//该集合接受任意类型

for(int i = 0;i

System.out.println(list.get(i));

}

}

}

public class MyClass {

public static void main(String[] args){

Universal universal = new Universal();

List name = new ArrayList<>();

name.add("jack");

name.add("Tom");

universal.showList(name);

//注意一点

List>names = new ArrayList();//这种定义方式会出错

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值