यदि मैं कोटलिन डेटा कक्षाओं का उपयोग करके अपनी मूल्य वस्तुओं का मॉडलिंग कर रहा हूं तो सत्यापन को संभालने का सबसे अच्छा तरीका क्या है। ऐसा लगता है कि इनिट ब्लॉक एकमात्र लॉजिकल जगह है क्योंकि यह प्राथमिक कन्स्ट्रक्टर के बाद निष्पादित होता है।सत्यापन डेटा कक्षा पैरामीटर्स कोटलिन
data class EmailAddress(val address: String) {
init {
if (address.isEmpty() || !address.matches(Regex("^[a-zA-Z0-9][email protected][a-zA-Z0-9]+(.[a-zA-Z]{2,})$"))) {
throw IllegalArgumentException("${address} is not a valid email address")
}
}
}
JSR-303 उदाहरण
इस के नकारात्मक पक्ष यह है का उपयोग करते हुए लोड समय बुनाई
@Configurable
data class EmailAddress(@Email val address: String) {
@Autowired
lateinit var validator: Validator
init {
validator.validate(this)
}
}
मैं हमेशा अपना पहला उदाहरण की तरह कुछ किया है इस तरह के साथ काम करने में असहज हो जाएगा, लेकिन मैं सिर्फ एक स्पष्ट 'validate' विधि डाल दिया और इसे नियंत्रक से कॉल करें (उदाहरण के लिए, इस मामले में कि मेरे पास अनुरोध ऑब्जेक्ट है जो एस द्वारा पॉप्युलेट किया गया है '@ अनुरोधबॉडी' के रूप में प्रिंग बूट और मैं इनपुट को प्रमाणित करना चाहता हूं। – Kevin