差分

2013-02-05 43 views
-1

什麼是差分

public static<V> List<V> myMethod(V v){ return new ArrayList<V>();} 

public static List<V> myMethod(V v){ return new ArrayList<V>();} 

之間差是什麼<V>返回類型的方法1層中的裝置的聲明之前?

+2

http://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html –

+2

簡單的問題已經在StackOverflow上提出並回答了,爲什麼downvote?另外:可能是一個類似的問題:http://stackoverflow.com/questions/8381018/what-does-x-mean-in-java-method-declarations?rq=1 –

+0

謝謝你,感謝你。 – Bnrdo

回答

0

所不同的是簡單的:

  • 第一個編譯
  • 第二個不編譯

的原因的第二一個不編譯是V尚未聲明。

第二個編譯的唯一方法是如果該方法不是靜態的,並且該類有一個通用參數V,從而爲所有實例方法聲明它。

0

在第一種方法中,V是該方法的類型參數。

在第二種方法中,V是一個類或接口類型。

+0

請提供示例或將我指向其他一些提供良好示例和解釋的網站。我發現很難搜索這個。 – Bnrdo

+0

第二種方法是一種常規方法,因此'V'必須是「正常」類型,即類或接口。第一種方法是「通用方法」,因此您需要了解Java泛型。 – irreputable