2012-08-22 38 views
-1

我剛剛創建了這樣一個類:NameOfTheClass<Raeaeraear>。這是什麼意思?爲什麼我可以放任何我想要的隨機東西?Java - 用'<>'創建類時,它意味着什麼?

+14

查看http://docs.oracle.com/javase/tutorial/java/generics/ –

+2

@JonSkeet我可以向您發送電子郵件的問題嗎? :P – alfasin

+3

@HovercraftFullOfEels我只是在開玩笑[*這*](http://msmvps.com/blogs/jon_skeet/archive/2012/08/22/stack-overflow-and-personal-emails.aspx) – alfasin

回答

1

這就是所謂的泛型。泛型是用來「說」的類什麼樣類型的它會一起工作的情況下,採取f.ex列表

List<People> myPeopleList = new ArrayList<People>(); 

這裏的列表參數。如果你看一下List接口的源代碼,它是這樣聲明的,這意味着接口List是通用的。

public interface List<E> extends Collection<E> { 
... 

在你的情況下,類NameOfTheClass將implementet有點像這樣,注意:泛型可以應用到一個類或接口。

public class NameOfTheClass<E> { 
.... 
public doSome(E e){ 
    doSomeGenericOperationWith(e); 
} 

這個類可以這樣使用:

NameOfTheClass<AType> instance = new NameOfTheClass<AType>(); 
Atype yourType = ... 
doSome(yourType); 

注:任何使用doSome() - 方法的需要型A型的參數,這會由Java編譯器來處理。所以如果你嘗試用其他類型的方法調用,編譯錯誤將會增加。

更多閱讀:http://docs.oracle.com/javase/tutorial/java/generics/why.html

0

當您使用<>時,編譯器會關閉檢查泛型類型。當編譯器需要知道該類型時,您不能使用例如<>

例如,

+0

非常感謝。 –

+0

這裏缺少的東西?我不能確定這兩行中的任何一行是如何編譯的。 –

+0

@ThomasJohanEggum,第一個問題是什麼? – jn1kk

相關問題