56 java集合和泛型_6 _泛型概述

文章目录

泛型

  1. Java泛型是JDK1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传递。
  2. 常见形式有泛型类、泛型接口、泛型方法。
  3. 语法:
  • T<…> T称为类型占位符,表示一种引用类型。
  1. 好处:
  • 提高代码的重用性
  • 防止类型转换异常,提高代码的安全性

泛型类

  1. 语法:类名, T称为类型占位符,表示一种引用类型,如果编写多个,要用逗号隔开
  2. 注意点:
  • 泛型只能使用引用类型
  • 不同泛型对象之间不能相互赋值

代码:

package com.wlw.collection.generic;

/**
* 泛型类
* 语法:类名<T>, T称为类型占位符,表示一种引用类型,如果编写多个,要用逗号隔开
*/
public class MyGeneric<T> {

//1.创建变量,(可以创建变量,但不能实例化,就是不能new)
T t;

//2.T 可以作为方法参数
public void show(T t){
System.out.println(t);
}

//3.T 作为返回值
public T getT(){

return t;
}
}
package com.wlw.collection.generic;
/*
1.泛型只能使用引用类型
2.不同泛型类型对象之间不能相互赋值
*/
public class TestGeneric {
public static void main(String[] args) {
MyGeneric<String> myDeneric1 = new MyGeneric<String>();
myDeneric1.t = "hello";
myDeneric1.show("hello everyone!");
System.out.println(myDeneric1.getT());

System.out.println("------------------------------");

MyGeneric<Integer> myGeneric2 = new MyGeneric<Integer>();
myGeneric2.t = 200;
myGeneric2.show(300);
System.out.println(myGeneric2.getT());

//MyGeneric<String> myGeneric3 = myGeneric2; //不同泛型类型对象之间不能相互赋值
}
}

/*
hello everyone!
hello
------------------------------
300
200
*/

泛型接口

  1. 语法:接口名
  2. 注意点:不能使用泛型创建静态常量
  3. 泛型接口的实现方式有两种:
  • 定义一个实现类,直接写出泛型
  • 定义一个泛型类,来实现这个泛型接口

代码:

package com.wlw.collection.generic;

/**
* 泛型接口
* 语法:接口名<T>
* 注意点:不能使用泛型创建静态常量
*/
public interface MyInterface<T> {
String name = "张三";

public T service(T t);
}
package com.wlw.collection.generic;

public class MyInterfaceImpl implements MyInterface<String>{
@Override
public String service(String s) {
return s;
}
}
package com.wlw.collection.generic;

public class MyInterfaceImpl2<T> implements MyInterface<T> {
@Override
public T service(T t) {
return t;
}
}
package com.wlw.collection.generic;

public class TestGeneric {
public static void main(String[] args) {

MyInterfaceImpl myInterfaceImpl = new MyInterfaceImpl();
System.out.println(myInterfaceImpl.service("大家好!"));

MyInterfaceImpl2<Integer> myInterfaceImpl2 = new MyInterfaceImpl2<Integer>();
System.out.println(myInterfaceImpl2.service(200));

}
}
/*
大家好!
200
*/

泛型方法

  1. 语法: 返回值类型

代码如下:

package com.wlw.collection.generic;

/**
* 泛型方法
* 语法:<T> 返回值类型
*/
public class MyGenericMethod {

public <T> T show(T t){
System.out.println("泛型方法:"+t);
return t;
}
}
package com.wlw.collection.generic;
/*
1.泛型只能使用引用类型
2.不同泛型类型对象之间不能相互赋值
*/
public class TestGeneric {
public static void main(String[] args) {

//泛型方法
MyGenericMethod myGenericMethod = new MyGenericMethod();
String s = myGenericMethod.show("中国加油!");
Integer integer = myGenericMethod.show(200);
Double d = myGenericMethod.show(3.14);

}
}

/*
泛型方法:中国加油!
泛型方法:200
泛型方法:3.14

*/