क्या कोई यह समझा सकता है कि स्ट्रिंग और कक्षा एनोटेशन पैरामीटर अलग-अलग क्यों अपेक्षित हैं? कंपाइलर को कक्षाओं के लिए अक्षर की आवश्यकता क्यों होती है, वैसे भी स्ट्रिंग्स के लिए स्थिरांक स्वीकार करते हैं?एनोटेशन विशेषता एक कक्षा शाब्दिक होना चाहिए? क्यूं कर? स्थिरांक भी ठीक होना चाहिए
वसंत के @RequestMapping साथ उदाहरण कार्य करना: TestNG के @Test साथ
public class MyController {
public static final String REQUEST_MAPPING = "/index.html";
@RequestMapping(MyController.REQUEST_MAPPING) // ALL OK!
...
}
WTF उदाहरण:
public class MyControllerTest {
public static final Class TEST_EXCEPTION = RuntimeException.class;
@Test(expectedExceptions = MyControllerTest.TEST_EXCEPTION) // compilation error, WTF:
// The value for annotation attribute Test.expectedExceptions must be a class literal
...
}
क्या निश्चित रूप से काम करता है @Test है (expectedExceptions = RuntimeException.class)। पर क्यों? एनोटेशन पैरामीटर में एकमात्र अंतर मैं देखता हूं: स्ट्रिंग बनाम कक्षा। पृथ्वी पर क्यों जावा कंपाइलर स्ट्रिंग निरंतर स्वीकार करता है लेकिन केवल कक्षा अक्षर स्वीकार करता है?
वाह, मैं पूरी तरह से इस बिंदु को याद करता हूं। कक्षा पर यह प्रतिबंध क्यों है? इसे इंगित करने के लिए धन्यवाद। – sibidiba