• Java基础:泛型


        Java的泛型是什么呢, 就是类型的參数化,这得类型包含方法參数和返回值。也就是原本该是确定类型的地方换成了变量,把类型的确定时间向后延迟了。

        在之前,学过“重载”的概念,重载是什么呢,举例来说

    public class Test{
    	// 处理整型数据
    	void receive(int i) {
    		System.out.println("Received one int data");
    		System.out.println("i="+i);
    	}
    	// 处理浮点型数据
    	void receive(float f) {
    		System.out.println("Received one float data");
    		System.out.println("f="+f);
    	}
    	// 处理字符串数据
    	void receive(String s) {
    		System.out.println("Received a String");
    		System.out.println("s="+s);
    	}
    
    }

        在上面的这个类里的三个方法中有同样的处理逻辑,仅仅有參数类型不同。方法调用时程序会依据參数的类型调用对应參数的方法,这就是參数重载,让类以统一的方式处理不同数据类型的手段。


    那泛型和重载有什么联系呢?

        泛型和重载从不同的角度处理了多种数据类型的问题。

    泛型能够应用的更广泛,能够用于方法、接口、类。那么让我们看看怎样用泛型实现上面的Test类呢?

    public class Test<T> {
    	void receive(T t) {
    		System.out.println("Received one "+t.getClass().getName()+" data");
    		System.out.println("t="+t);
    	}
    	
    	public static void main(String[] args){
    		Test<String> test=new Test<String>();
    		test.receive("abc");
    		
    		Test<Integer> test1=new Test<Integer>();
    		test1.receive(1);
    	}
    }
        我们发如今泛型的应用中,我们用变量T取代了详细的类型參数。能够等到实际调用的时候在确定參数的类型,这样大大降低了代码的量,而且T能够是java中的不论什么类型(包含基本类型和对象类型)。事实上这里并没有什么新知识。仅仅是在函数的基础上。把传入数据和输出数据(返回值)的类型也參数化了。以下是一个方法的返回值也是用泛型的样例:

    public class TestGenetic<K,V> {
    	public Hashtable<K,V> table=new Hashtable<K,V>();
    	
    	public void put(K k,V v){
    		table.put(k, v);
    	}
    	
    	public V get(K k){
    		return table.get(k);
    	}
    	
    	public static void main(String[] arg){
    		TestGenetic<String,String> test=new TestGenetic<String,String>();
    		test.put("001", "abc");
    		test.put("002", "def");
    		String str=test.get("001");
    		System.out.print(str);
    	}
    	
    }

    当中get方法的返回值也使用了泛型,因此应用就更加的灵活了。当然,以上代码中用到的T。K。V都仅仅相当于变量名。用什么字母取代都能够。






  • 相关阅读:
    二叉链表(双叉链表)实现二叉树
    队列知识
    windows下Anaconda3配置TensorFlow深度学习库
    栈的顺序结构和链式结构实现
    Anaconda中配置Pyspark的Spark开发环境
    Scala学习笔记(3)-表达式归纳
    SparkR-Install
    推荐系统之最小二乘法ALS的Spark实现
    linux查看主机端口进程命令
    使用redis的五个注意事项
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5212461.html
Copyright © 2020-2023  润新知