2010-08-13 27 views
5

Sadece java eğitici koleksiyonunu okuyorum ve neden <E>'un neden statik olduğunu anlıyorum?Statik <E> nedir?

 

public static<E> Set<E> removeDups(Collection<E> c) { 
    return new LinkedHashSet(c); 
} 


sayesinde Sarah

+0

Yöntemin' daha esnek olacaktır. Bu şekilde, E. alt sınıflarının koleksiyonlarından geçebilirsiniz. – whiskeysierra

cevap

8

, genellikle statik ve jenerik parametre adı arasında bir boşluk var. static, yöntemi statik olarak bildirir, yani, onu çağırmak için örnek gerekmez. <E>, yöntemin argümanlarını ve/veya dönüş değerini parametrelemek için kullanılan, sınırsız bir jenerik parametrenin E olarak adlandırıldığını bildirir. İşte, yöntem bildirmek için dönüş türü, Set<E> hem E kümesi döndüren kullanılan ve parametresinde, Collection<E> yöntem sadece belirtilmemişse E.

E tipi bir koleksiyon aldığını belirten Dönüş değeri ve yöntem parametresi, aynı türle genel olarak parametrelendirilmelidir. Derleyici, yöntem çağrıldığında gerçek türü belirler. Jenerik parametreleri uyuşmuyor çünkü Örneğin,

Collection<String> myStrings = new ArrayList<String>(); 
    .. add strings 
    Set<String> uniqueStrings = SomeClass.removeDups(myStrings); 

iki koleksiyonları için farklı parametreli türlerini kullanmak çalışırsanız

, böyle
Set<Integer> uniqueStrings = SomeClass.removeDups(myStrings); 

olarak bu, bir derleyici hatası oluşturur. Eğer Collection `olarak toplanmasını ilan zaman

2

<E> bu Jenerik Yöntem 5.0

onun kullanımıyla ilgili daha fazla ayrıntı için here bakınız Java Generics ile tanıtılan bir özellik olduğunu ilan etme yoludur ve mantık. okunabilirliği için

İlgili konular