[英]What does <> do in Java
我目前剛開始使用Java。 到目前為止,我已經能夠從JavaScript和PHP的知識中輕松地使用基Classes
,如Classes
, Functions
, Arrays
等。
但是,我從未見過的是: <>
。 其中包含某種類型的變量。 因為我不知道它叫什么,我找不到任何答案。
我見過他們是這樣的:
List<String> myList = new ArrayList<String>();
但也喜歡:
public static <T> boolean contains( final T[] array, final T v ) {
for ( final T e : array )
if ( e == v || v != null && v.equals( e ) )
return true;
return false;
}
<String>
是什么意思? 在這個功能中,我還想知道T
特別之處是什么?
這是通用類型
它允許您做的是傳遞一個類型,並使其對多種對象類型有用
因此,List是一個通用集合,它使您可以列出任何對象。 使List<String>
使對象成為字符串列表。 或者你可以使用List<MyClassType>
,它會列出你的類的對象
它定義了集合可以容納的對象的Type
所以當你寫List<String> myList = new ArrayList<String>();
, 它的意思是
創建一個可以容納String對象的arrayList。
SomeParameterizedClass {T someValue; }
表示您可以將類型傳遞給類,例如SomeParameterizedClass<String>
以便someValue
變為String
類型
當你寫List<T> list = new ArrayList<T>();
,這里T可以是任何類型。
使用Java 7,您可以簡單地說List<String> list = new ArrayList<>();
。 它具有相同的含義。
在Java 7中, <>
被稱為菱形運算符
在下列情況下你會發現<>,T是一個簡單英語的“參數類型”,這意味着你可以用任何其他非基本類型(如String
或Integer
)“替換”該T:
當您聲明參數化類型時:
class MyParameterizedClass<T> { public T myValue; }
當您聲明參數化類型的變量時:
MyParameterizedClass<String> myStringParam; MyParameterizedClass<Integer> myIntegerParam;
當您使用參數化類型的構造函數時:
MyParameterizedClass<String> myStringParam = new MyParameterizedClass<String>(); MyParameterizedClass<Integer> myIntegerParam = new MyParameterizedClass<Integer>(); myStringParam.myValue = "Hello world"; myIntegerParam.myValue = 5;
聲明泛型方法時:
public <T> T updateMyValue(T myValue) { this.myValue = myValue }
你觀察到的是部分正確的! 在Java中,<>內部應為“對象”類型或“對象”的任何子類類型。
當您聲明myList如下:
List<String> myList = new ArrayList<String>()
,它確保聲明和初始化的myList只包含String類型的元素。 這稱為類型聲明。
public static <T> boolean contains( final T[] array, final T v ) { }
,是一個泛型方法聲明,暗示傳遞的兩個參數應該是同一個對象類型,第一個參數是一個數組,第二個參數是一個對象。 而且方法的返回類型也應該是相同的類型。
有關泛型的更多示例,請參考Java文檔。 http://docs.oracle.com/javase/tutorial/extra/generics/methods.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.