2012-01-15 13 views

cevap

11

birincisi Java 7 beri geçerlidir ve bir

eşdeğer
List<String> list = new ArrayList<String>(); 

Sadece az ayrıntılı var.

ArrayList<String> list = new ArrayList<String>(); 

eşdeğer ve ikinci bir nedenle kesinlikle eşit olan üçüncü bir, için aynı

.

1.The yeni Java 7 elmas operatörü yapmanızı sağlar: List versus ArrayList as reference type?

2

burada tespite iki nokta vardır:

Aşağıdaki soruya cevaplar belirtilen nedenlerden dolayı, ilkini tercih etmeliyiz Her iki tarafta tip parametresini belirtmeden genel bir sınıf oluşturmak. Yani bu iki eşdeğerdir:

ArrayList<String> list = new ArrayList<String>(); 
ArrayList<String> list = new ArrayList<>(); 

2.The daha önemli nokta, ilk iki tezahürleri arasındaki farktır. İkincisi ise açık: ilkinde

ArrayList<String> list = new ArrayList<String>(); 

: Eğer ArrayList bir List ait alt tipi ve dolayısıyla atama geçerliyse olduğu gerçeğini kullanıyor

List<String> list = new ArrayList<>(); 

. Ancak, yeni list nesne üzerinde yalnızca (nesne sonuçta List olarak açıklandığı için) List içerdiği yöntemlerin alt kümesini var ama ArrayList mevcut uygulamalar ile. Bu, nesne yönelimli programlamada polimorfizm olarak adlandırılır ve çeşitli farklı işlevler sağlamak için ebeveynin beklendiği yerde ebeveynin yerine alt sınıfın kullanılmasına izin verir.

4

üç biraz eşdeğerdir: Yukarıda

List<String> list = new ArrayList<>(); 

, sen String unsurları içeren ve beton sınıfına ArrayList ile örneğini olacak List arabirimini uygulayan bir değişken bildirerek ediyoruz. Ayrıca, yine <> arasında String yazmak zorunda değilsiniz Java 7'nin yeni elmas sözdizimi evlat kullanıyoruz.Yukarıda

ArrayList<String> list = new ArrayList<String>(); 

, sen String unsurları içeren ve String türünü belirtmek mandates "geleneksel" sözdizimi kullanılarak beton sınıfına ArrayList ile örneğini somut sınıfın ArrayList bir değişken bildirerek ediyoruz <> arasında. Yukarıda
ArrayList<String> list = new ArrayList<>(); 

, sen String unsurları içeren ve beton sınıfına ArrayList ile örneğini somut sınıfın ArrayList bir değişken bildirerek ediyoruz. Ayrıca, yine <> arasında String yazmak zorunda değilsiniz Java 7'nin yeni elmas sözdizimi evlat kullanıyoruz.

Elmas sözdiziminin (<>) yalnızca Java 7 ve üstü sürümlerde çalışacağını unutmayın, Java'nın önceki sürümlerinde, genelleştirici için geleneksel sözdizimini (<the-type>) kullanarak takılı kaldınız.

Son iki form tamamen denktir; İlk form, list değişkeninin List türünde ve ArrayList türünde olmadığını belirttiğinizden biraz farklıdır ve bu, tercih edilen biçimdir, çünkü iyi nesne yönelimli uygulamalar, program to an 'interface', not an 'implementation''u zorunlu kılar.