2013-01-14 18 views
5

@RequestMapping belgelerini okuma: http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/RequestMapping.html@RequestMapping ek açıklaması neden java'da String parametresini kabul ediyor, ancak scala'da değil?

Yol eşlemesi için bir String dizisi parametresini kabul eder.

Yani bu java kullanarak çalışır:

@RequestMapping("MYVIEW") 

ama scala ben kullanmanız gerekir: ek açıklama String dizisi beklediği gibi

@RequestMapping(Array("MYVIEW")) 

scala versiyonu mantıklı. Ama neden yukarıda bir derleme zamanı hatası vermemeli, java'da çalışıyor?

tipi ArrayChecker yöntemi acceptArrayParam (String []) için geçerli değildir olup:

sınıfının ArrayChecker '(Bu noktayı göstermek için yazdığı bir sınıf) altında

bir java hatası derleme neden olur argümanlar (Dize)

public class ArrayChecker { 

    public static void main(String args[]){ 

     String[] strArray; 

     acceptArrayParam("test"); 
    } 

    private static void acceptArrayParam(String[] param){ 

    } 
} 

benzer hatası ("MyView") @ RequestMapping neden olması gerekmez mi?

cevap

6

Bölüm 9.7.1: eleman türü bir dizi türü ve karşılık gelen ElementValue bir ElementValueArrayInitializer, olan tek eleman, bir dizi değeri değil

ise ElementValue ile temsil edilen bir değerdir eleman ile ilişkilidir. Aksi takdirde, karşılık gelen ElementValue bir ElementValueArrayInitializer ise, ElementValueArrayInitializer tarafından temsil edilen dizi değeri öğeyle ilişkilendirilir. belirten yukarıdaki açıklayıcı bir yorum ile

: Tek öğeli bir dizi bir dizi değerli açıklama türüyle ilişkili olduğu zaman başka deyişle

, küme parantezi atlamak için izin verilir öğesi. Scala eşdeğer dizi başlatıcı sözdizimi Çünkü

, sen Array(elems) kullanmalıdır.

0

Bu, varsayılan value öğesini kullanan ek açıklamaların dil özelliklerinin bir parçasıdır.

"Küme parantezlerinin ihmal edildiğini unutmayın." Ifadesini içeren örnekler için JLS 9.7.3 numaralı örneğe bakın. Java SE özellikleri durumlarının

+0

Bu yanlıştır; yalnızca "değer" öğeleri için geçerli değildir. –

İlgili konular