java泛型接口详解

来源:互联网 发布:最好的英汉翻译软件 编辑:程序博客网 时间:2024/06/05 00:08
/* * 泛型接口 */interface Tool<T> {public void show(T t);//泛型方法public <E> void print(E e);}/* * 这种方式适合实现接口的时候就知道类里的泛型是什么 */class ToolImpl implements Tool<String> {@Overridepublic void show(String t) {System.out.println("show:" + t);}@Overridepublic <E> void print(E e) {System.out.println("print:" + e);}}/* * 这种方式不好! */class Tool2Impl implements Tool {@Overridepublic void show(Object t) {System.out.println("show obj" + t);}@Overridepublic void print(Object e) {System.out.println("show obj" + e);}}/* * 这种方式适合使用的时候指定泛型  * 在继承接口的时候不用指定泛型  * 注意的是<T>也可以写成别的比如<C>  * 写成<E>的话,类上的<E>和print方法 * 上的<E>也不是一个类型 */class Tool3Impl<T> implements Tool<T> {@Overridepublic void show(T t) {System.out.println("show=" + t);}@Overridepublic <E> void print(E e) {System.out.println("print=" + e);}}/* * 这个写法中show方法和print方法用的泛型也不是一个  * 类上的<E>和print方法上的<E>不是一个类型!!! */class Tool4Impl<E> implements Tool<E> {@Overridepublic void show(E t) {System.out.println("show-" + t);}@Overridepublic <E> void print(E e) {System.out.println("print-" + e);}}/* * 错误! * class Tool5Impl<String> implements Tool<T> { *  * } *//* * 正确,但是这个泛型上的String没意义,和Tool3Impl写法没区别  * class Tool5Impl<String, T> implements Tool<T> { *  * } *//* * 错误1  * class Tool5Impl<String|T> implements Tool<E> { *  * } *//* * 正确,但是这个泛型上的String|T没意义,和Tool4Impl写法没区别  * class Tool6Impl<String|T, E> implements Tool<E> { *  * } */public class GenericDemo {public static void main(String[] args) {ToolImpl ti = new ToolImpl();ti.show("nihao");ti.print(6);Tool3Impl<String> t3i = new Tool3Impl<String>();t3i.show("haha");t3i.print(6);Tool4Impl<String> t4i = new Tool4Impl<String>();t4i.show("hehe");t4i.print(6);}}

0 0
原创粉丝点击