2013-01-14 22 views
5

@RequestMapping दस्तावेज़ पढ़ना: http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/RequestMapping.html@RequestMapping एनोटेशन जावा में स्ट्रिंग पैरामीटर क्यों स्वीकार करता है लेकिन स्कैला में नहीं?

यह अपने पथ मैपिंग के लिए एक स्ट्रिंग सरणी पैरामीटर स्वीकार करता है।

तो यह जावा का उपयोग कर काम करता है:

@RequestMapping("MYVIEW") 

लेकिन स्केला में मैं उपयोग करने की आवश्यकता:

@RequestMapping(Array("MYVIEW")) 

स्केला संस्करण के रूप में एनोटेशन एक स्ट्रिंग सरणी उम्मीद समझ में आता है। लेकिन जावा में उपर्युक्त काम क्यों करता है, क्या इसे संकलन समय त्रुटि नहीं देनी चाहिए?

विधि acceptArrayParam (String []) प्रकार ArrayChecker में के लिए लागू नहीं है:

वर्ग 'ArrayChecker' (एक वर्ग मैं इस बिंदु को वर्णन लिखा था) नीचे एक जावा संकलन समय त्रुटि होती है तर्क (स्ट्रिंग)

public class ArrayChecker { 

    public static void main(String args[]){ 

     String[] strArray; 

     acceptArrayParam("test"); 
    } 

    private static void acceptArrayParam(String[] param){ 

    } 
} 

एक समान त्रुटि @RequestMapping ("MyView") की वजह से नहीं किया जाना चाहिए?

उत्तर

6

जावा SE विनिर्देश राज्यों की धारा 9.7.1:

तो तत्व प्रकार एक सरणी प्रकार है और इसी ElementValue एक ElementValueArrayInitializer, तो एक सरणी मूल्य जिसका एकमात्र तत्व नहीं है ElementValue का प्रतिनिधित्व करती मूल्य है तत्व से जुड़ा हुआ है। अन्यथा, यदि संबंधित ElementValue एक ElementValueArrayInitializer है, तो ElementValueArrayInitializer द्वारा प्रतिनिधित्व किया गया सरणी मान तत्व से जुड़ा हुआ है।

बताते हुए एक टिप्पणी ऊपर स्पष्ट है:

दूसरे शब्दों में, यह घुंघराले ब्रेसिज़ छोड़ अनुमति है जब एक एकल तत्व सरणी एक सरणी-मान टिप्पणी का प्रकार के साथ जुड़े होने के लिए है तत्व।

क्योंकि स्काला कोई समकक्ष सरणी प्रारंभकर्ता वाक्य रचना है, तो आपको Array(elems) उपयोग करना चाहिए।

0

यह एनोटेशन के लिए भाषा विनिर्देश का हिस्सा है जो डिफ़ॉल्ट value तत्व का उपयोग करता है।

उदाहरण के लिए JLS 9.7.3 देखें, जिसमें टिप्पणी के साथ एक "ध्यान दें कि घुंघराले ब्रेसिज़ छोड़े गए हैं।"

+0

यह गलत है, यह न केवल 'मान' तत्वों पर लागू होता है। –