कोटलिन में सार वर्ग के अनाम वर्ग का एक उदाहरण कैसे बनाएं?


114

मान लें कि KeyAdapterकई तरीकों के साथ एक सार वर्ग है जिसे ओवरराइड किया जा सकता है।

जावा में मैं कर सकता हूं:

KeyListener keyListener = new KeyAdapter() {
    @Override public void keyPressed(KeyEvent keyEvent) {
        // ...
    }
};

कोटलिन में कैसे करें?


1
मैं नीचे नहीं गया, लेकिन आपका प्रश्न बहुत कम शोध प्रयासों को दर्शाता है। कोटलिन में अनाम कक्षाओं के लिए एक सरल Google खोज इस पृष्ठ को बदल देती है जो चर्चा करता है - सभी चीजों की - अनाम आंतरिक वर्ग के लिए कोटलिन एनालॉग कैसे बनाएं।
टेड हॉप

5
मैं भी सिर्फ कोटलिन के साथ शुरू कर रहा हूँ। यह सवाल एक बहुत ही उचित Google खोज के साथ पहली हिट के रूप में आता है। मेरे लिए बहुत भ्रमित करने वाली बात यह थी कि प्रश्न में KeyAdapter सबसे अधिक संभावना java.awt.event.KeyAdapter है, जो 3 तरीकों और सरल val k: KeyAdapter = KeyAdapter { println("Hello, world!") }अभ्यस्त काम के साथ एक सार वर्ग है । (हालांकि, मैं लैम्ब्डा सिंटैक्स की तलाश कर रहा था।) मुझे लगता है कि मैं इस सटीक शीर्षक के साथ एओटर प्रश्न की तलाश करूंगा, लेकिन एक बेहतर तैयार किया गया प्रश्न और इसे एक टिप्पणी के साथ लिंक करना होगा ...
पीटर लैम्बबर्ग

@PeterLamberg यह java.awt नहीं है यह Intellij plugins API है।
तवरोह

यह सवाल कुछ Google खोजों में पहली हिट के रूप में सामने आता है, जिसके लिए प्रासंगिक प्रश्न इस के करीब है, इसलिए मैं इसे यहां लिंक कर रहा हूं
पीटर लैम्बबर्ग

12
मैं यह नहीं देखता कि क्यों इसे बहुत आसान समझा जाता है। इस सवाल का एक बहुत कुछ है, जिसका अर्थ है कि बहुत सारे लोग इस समस्या का सामना करते हैं। भाषा अंतर के कारण, यह स्पष्ट नहीं है कि Google पर पहला हिट समाधान है या नहीं। मैंने आधिकारिक दस्तावेज पर ध्यान नहीं दिया लेकिन एसओ के इस सवाल ने इसे साफ कर दिया।
मुज़

जवाबों:


178

से आधिकारिक Kotlin भाषा प्रलेखन :

window.addMouseListener(object : MouseAdapter() { 
    override fun mouseClicked(e : MouseEvent) { 
    // ... 
}

हाथ में अपनी समस्या के लिए लागू:

val keyListener = object : KeyAdapter() { 
    override fun keyPressed(keyEvent : KeyEvent) { 
    // ... 
} 

जैसा कि पीटर लैम्बबर्ग ने इंगित किया है - यदि अनाम वर्ग वास्तव में एक कार्यात्मक इंटरफ़ेस का कार्यान्वयन है ( अर्थात एक सार वर्ग का नहीं ), SAM रूपांतरण का उपयोग इस कथन को और भी सरल बनाने के लिए किया जा सकता है:

val keyListener = KeyAdapter { keyEvent ->
    // ...
}

कृपया इस चर्चा को जावा और कोटलिन में परिभाषित इंटरफेस के विभिन्न उपयोग के बारे में भी ध्यान दें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.