1. 程式人生 > >java中方法返回值前的的作用

java中方法返回值前的的作用

方法返回值前的<T>的左右是告訴編譯器,當前的方法的值傳入型別可以和初始化的泛型類不同,也就是該方法的泛型類可以自定義,不需要跟類初始化的泛型類相同

我們通過一段程式碼比較來看下就明白了 

class Show<T> {
	public void print1(T t) {
		System.out.println(t);
	}

	public <T> void print2(T t) {
		System.out.println(t);
	}
}

public class Demo {
	public static void main(String[] args) {
		Show<String> show = new Show<String>();
		show.print1(new Integer(1));// 不能編譯
		show.print2(new Integer(1));// 可以編譯
	}
}

原始碼分析

  • Show類定義了泛型T,它有兩個print方法,兩個方法只有一點差別,print2有<T>,而print1沒有。
  • Demo類例項化Show類,並將泛型型別定義為String型別,卻為兩個print方法傳入Integer型別的物件。print2可以編譯,而print1不可編譯。
  • print1中的泛型與show物件的泛型相同,都是String,因此不能傳入Integer型別的引數。而print2方法自定義了一個泛型T,因此方法引數型別不受物件泛型型別限制,這樣定義的話這個方法是可以傳入任意型別的引數的。