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,因此方法參數類型不受對象泛型類型限制,這樣定義的話這個方法是可以傳入任意類型的參數的。

其它問題

  • IDE(Eclipse)警告“The type parameter T is hiding the type T”,這是因爲print2方法定義的泛型名與類定義的泛型名相同,都爲T。將print2方法的泛型名改爲E,或是其它的,就不會有警告了。如果同名的話,調用方法時方法的泛型將覆蓋對象的泛型。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章