zoukankan      html  css  js  c++  java
  • java泛型接口详解

    /*
     * 泛型接口
     */
    interface Tool<T> {
    	public void show(T t);
    	
    	//泛型方法
    	public <E> void print(E e);
    }
    
    /*
     * 这种方式适合实现接口的时候就知道类里的泛型是什么
     */
    class ToolImpl implements Tool<String> {
    
    	@Override
    	public void show(String t) {
    		System.out.println("show:" + t);
    	}
    
    	@Override
    	public <E> void print(E e) {
    		System.out.println("print:" + e);
    	}
    
    }
    
    /*
     * 这种方式不好!
     */
    class Tool2Impl implements Tool {
    
    	@Override
    	public void show(Object t) {
    		System.out.println("show obj" + t);
    	}
    
    	@Override
    	public void print(Object e) {
    		System.out.println("show obj" + e);
    	}
    
    }
    
    /*
     * 这种方式适合使用的时候指定泛型 
     * 在继承接口的时候不用指定泛型 
     * 注意的是<T>也可以写成别的比如<C> 
     * 写成<E>的话,类上的<E>和print方法
     * 上的<E>也不是一个类型
     */
    class Tool3Impl<T> implements Tool<T> {
    
    	@Override
    	public void show(T t) {
    		System.out.println("show=" + t);
    	}
    
    	@Override
    	public <E> void print(E e) {
    		System.out.println("print=" + e);
    	}
    
    }
    
    /*
     * 这个写法中show方法和print方法用的泛型也不是一个 
     * 类上的<E>和print方法上的<E>不是一个类型!!!
     */
    class Tool4Impl<E> implements Tool<E> {
    
    	@Override
    	public void show(E t) {
    		System.out.println("show-" + t);
    	}
    
    	@Override
    	public <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);
    	}
    
    }
    


  • 相关阅读:
    博客园博客
    mongo
    函数式编程与面向对象编程的对比
    python_字典dict要点总结
    pyhon_列表、元组要点总结
    vue-element框架通过blob进行后端token权限验证下载
    node-本地搭建服务
    (转载)测试用例标准
    soapUI学习笔记--用例字段参数化
    soapUI学习笔记---断言的小使用
  • 原文地址:https://www.cnblogs.com/riasky/p/3471538.html
Copyright © 2011-2022 走看看