public class test
public void sett(t name)
public void sett2(t name)
public t gett2(t name)
public t gett3(t name)
public static void main(string args)
}
public class classname
void show_2(e e)
void show_3(t t)
public static void main(string args)
}class fruit
} @override
public string tostring()
}class person
}
與是一樣的。但是 和 t 完全是兩個概念 ,t是泛型,是泛型的宣告,宣告了的方法可以不受類的的約束
意思就是說classname中一旦t被指定為fruit後那麼show_1沒有字首的話,該方法中只能是show_1 (fruit物件)
而要是有字首或的話,那麼就是告訴編譯器對它說:這是新指定的乙個型別,跟classname類物件中的t沒有關係。
從上面看,那就是這個方法返回值前也加個的話,這個t就代表該方法自己獨有的某個類,而不去和類中限定的t產生衝突,你直接換成會更容易理解的。
可以理解為乙個型別的宣告,否則返回值和函式引數中突然出現了乙個"t",編譯器知道這是什麼東西,肯定會報錯
就跟int a;以後才能使用a這個變數乙個道理
泛型 為什麼是泛型?
需求 先需編寫乙個程式,用棧 stack 進行進棧和出棧操作,並對棧中的元素進行運算。方案一 假設元素為int型別,則可使用 code class stack public void push int x public int pop 客戶 code class test 然而,現在需求發生變化。客...
為什麼使用泛型
泛型 當我們將乙個物件放入集合,集合不會記住此物件的型別,當再次取出時,該物件的變異型別為object,但其執行時型別仍然為其本身型別。強制轉換很容易出現classcastexception異常 listarraylist new arraylist 把引數string型別當成引數傳入容器,指定容器...
泛型方法前為什麼要加
package com.test05.mytest class fruit class person class classname void show 2 e e void show 3 t t public static void main string args 輸出 而show 2 和sho...