泛型
- 什么是泛型
java泛型是JDK1.5引入的一个新特性,其本质是参数化类型,把类型作为参数传递
- 常见的新式有
泛型类,泛型接口,泛型方法
- 泛型的语法
<T …> T为类型占位符,表示一种引用类型
- 泛型发好处
- 提高代码的重用性
- 防止代码类型转换异常,提高代码的安全性
泛型类
- 泛型类的创建
public class Generic<T>{
//使用泛型T
//1.创建变量
T t;
//2.泛型作为方法的参数
public void say(T t){
//这里不能new一个T的对象(T t=new T()),因为T的类型是未知的我们不知道T的构造方法是不是私有的
System.out.println(t);
}
//3.泛型作为方法的返回值
public T test(){
return t;
}
}
- 使用泛型类创建对象
1.泛型只能使用引用类型2. 泛型之间不能相互赋值()
public class TestGeneric{
public static void main(String[] args){
//
Generic<String> generic = new Generic<String>();
generic.t="abx";
generic.say("hahah");
String string=generic.test();
Generic<integer> generic2 = new Generic<integer>();
generic2.t=100;
generic2.say(10000);
Integer integer=generic2.test();
}
}
泛型接口
- 泛型接口的创建
public interface GenericInterface<T> {
String name="zhangsan";
//不能使用泛型创建静态常量(T t)
T say(T t);
}
- 泛型接口的实现类
//实现类确定泛型类型
public class GenericInterfaceTest implements GenericInterface<String>{
@Override
public String say(String s) {
System.out.println(s);
return s;
}
}
//实现类是泛型类
public class GenericInterfaceTest2<T> implements GenericInterface<T>{
@Override
public T say(T t) {
System.out.println(t);
return t;
}
}
- 泛型接口的使用
public class Test {
public static void main(String[] args) {
GenericInterfaceTest genericInterfaceTest=new GenericInterfaceTest();
genericInterfaceTest.say("ssss");
GenericInterfaceTest2<Integer>
//泛型类实现泛型接口,在使用时确定泛型类型
genericInterfaceTest2=new GenericInterfaceTest2<Integer>();
genericInterfaceTest2.say(100);
}
}
泛型方法
- 泛型方法的创建
// 格式 : <T> 返回值类型 方法名(){}
public class Demo8 {
public <T> void say(T t) {
System.out.println(t);
}
//可以是返回值也是泛型的方法
public <E> E talk(E e){
System.out.println(e);
return e;
}
}
- 泛型方法的使用
public class Demo8Test {
public static void main(String[] args) {
Demo8 demo8=new Demo8();
//这里传什么值T就是什么类型的
demo8.say("sssss");
demo8.talk(123);
}
}