56 java集合和泛型_6 _泛型概述
原创
©著作权归作者所有:来自51CTO博客作者悬浮海分海的原创作品,请联系作者获取转载授权,否则将追究法律责任
56 java集合和泛型_6 _泛型概述
文章目录
泛型
- Java泛型是JDK1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传递。
- 常见形式有泛型类、泛型接口、泛型方法。
- 语法:
- 好处:
- 提高代码的重用性
- 防止类型转换异常,提高代码的安全性
泛型类
- 语法:类名, T称为类型占位符,表示一种引用类型,如果编写多个,要用逗号隔开
- 注意点:
代码:
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
*/
泛型接口
- 语法:接口名
- 注意点:不能使用泛型创建静态常量
- 泛型接口的实现方式有两种:
- 定义一个实现类,直接写出泛型
- 定义一个泛型类,来实现这个泛型接口
代码:
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
*/
泛型方法
- 语法: 返回值类型
代码如下:
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
*/