定义:
是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。
泛型高级
?:任意类型,如果没有明确,那么就是Object以及任意的Java类了
? extends E:向下限定,E及其子类
? super E:向上限定,E极其父类
1.自定义泛型类,泛型方法
package cn;
/**
* 泛型类:把泛型定义在类上
*
* @author Administrator
*
*/
public class ObjectTest<T> {
private T object;
public T getObject() {
return object;
}
public void setObject(T object) {
this.object = object;
}
/**
* 自定义泛型方法
* @return
*/
public <E> E show(E e) {
return e;
}
}
2.自定义接口泛型
package cn;
/**
*
*自定义泛型接口
*/
public interface IObjectTest<T> {
public abstract void method(T t);
public abstract <E> E method2(E e);
}
3自定义泛型接口实现
package cn;
/**
* 自定义泛型接口实现
*/
public class ObjectTestImpl<T> implements IObjectTest<T> {
@Override
public void method(T t) {
System.out.println(t);
}
@Override
public <E> E method2(E e) {
return e;
}
}
泛型测试1
package cn;
public class Test {
/**
*泛型高级(通配符)
* ?:任意类型,如果没有明确,那么就是Object以及任意的Java类了
* ? extends E:向下限定,E及其子类
* ? super E:向上限定,E极其父类
*/
public static void main(String[] args) {
//自定义泛型类测试
System.out.println("------自定义泛型类测试---------");
ObjectTest<String> objectString=new ObjectTest<String>();
objectString.setObject("自定义类型String");
System.out.println(objectString.getObject());
ObjectTest<Integer> objectInteger=new ObjectTest<Integer>();
objectInteger.setObject(12);
System.out.println(objectInteger.getObject());
//自定义泛型方法测试
System.out.println("-----自定义泛型方法测试-----");
System.out.println(objectInteger.show("String"));
System.out.println(objectInteger.show(12));
System.out.println("-----泛型接口测试-----");
IObjectTest<String> ObjectTestImpl=new ObjectTestImpl<String>();
System.out.println(ObjectTestImpl.method2("接口"));
System.out.println(ObjectTestImpl.method2(12));
ObjectTestImpl.method("只能String");
}
}
泛型测试2