2015-05-07 6 views
7

में एनोटेशन के पैरामीटर के रूप में एनोटेशन के पैरामीटर के एरे, एनोटेशन को पैरामीटर के रूप में एरे पास करने के बारे में बहुत सारे प्रश्न हैं, यह उन लोगों की एक डुप्ली नहीं है।स्कॉट

मैं जावा-भूमि एनोटेशन का उपयोग करना चाहता हूं जो एनोटेशन पैरामीटर के रूप में लेता है, उदा।

@ManagedOperation 
@ManagedOperationParameters({ 
    @ManagedOperationParameter(name="start"), 
    @ManagedOperationParameter(name="end") 
}) 
def stuff(start: String, end: String): Unit = ??? 

लेकिन इस स्काला में मान्य सिंटैक्स नहीं है, और न ही,

@ManagedOperation 
@ManagedOperationParameters(Array(
    @ManagedOperationParameter(name="start"), 
    @ManagedOperationParameter(name="end") 
)) 
def stuff(start: String, end: String): Unit = ??? 

तो ऐसा करने का सही तरीका क्या है अगर यह भी संभव है?

बीटीडब्ल्यू, मैं भी checked all of github यह देखने के लिए कि क्या कोई भी स्कैला देव इसका उपयोग कर रहा है (स्प्रिंग जेएमएक्स) एनोटेशन।

+0

हैं तो कृपया उसे के रूप में सही निशान। – igreen

+0

मुझे यह जांचना होगा कि यह काम करता है, पूछने की कोई आवश्यकता नहीं है। – fommil

उत्तर

3

स्केला में भीतरी एनोटेशन नियमित प्रकार के रूप में इस्तेमाल किया जाना चाहिए: मेरा उत्तर आपकी समस्या का समाधान

@JsonTypeInfo(
    use = JsonTypeInfo.Id.NAME, 
    include = JsonTypeInfo.As.PROPERTY, 
    property = "moduleType", 
    defaultImpl = classOf[PuppetModule] 
) 
@JsonSubTypes(Array(
    new Type(value = classOf[PuppetModule], name = "puppet"), 
    new Type(value = classOf[PluginModule], name = "plugin") 
)) 
trait Module { 
    val moduleType: String = if (this.isInstanceOf[PuppetModule]) "puppet" else "plugin" 
    val nodes: List[String] = List[String]() 
} 
+0

अब मैं स्कैला 2.12.3 का उपयोग कर रहा हूं। कंपाइलर ने मुझे बताया: "एनोटेशन तर्क को स्थिर होना चाहिए।" "नया प्रकार (...)" अमान्य है। क्या मै गलत हु ? धन्यवाद। –

+0

@ZhuoYING मैं बस 2.12.3 के साथ अपने env पर इसका परीक्षण करता हूं और यह संकलित करता है ... आप यह त्रुटि कहां देखते हैं? आईडीई? – igreen

+0

हां, मैं 'इंटेलिजे आईडीईए 2017.1.2' का उपयोग कर रहा हूं। –

संबंधित मुद्दे