2015-06-16 7 views
6

में कोटलिन एक्सटेंशन का उपयोग करें क्या एंड्रॉइड जावा क्लास में कोटलिन एक्सटेंशन का उपयोग करना संभव है? उदाहरण:एंड्रॉइड जावा क्लास

fun String.getSomething(): String { 
    return "something" 
} 

तो जावा में इसे पसंद का उपयोग करें:

String someString = "blabla"; 
someString.getSomething(); 

संभव है?

उत्तर

2

आप मिश्रण कर सकते हैं kotlin और जावा (प्रयोग/kotlin जावा कक्षाओं में कक्षाओं कहते हैं) लेकिन क्या तुम यहाँ चाहते हैं जावा में एक kotlin सुविधा का उपयोग है - यह संभव नहीं है

+0

धन्यवाद - मैंने सोचा कि यह कुछ है – Informatic0re

13

Kotlin का विस्तार कार्यों JVM तरीकों को संकलित किया गया है रिसीवर को पहले पैरामीटर के रूप में लेना। आपका एक्सटेंशन समारोह शीर्ष स्तर पर घोषित किया जाता है, तो एक फ़ाइल में उदाहरण file.kt नामित के लिए:

package foo 

fun String.getSomething(): String { 
    return "something" 
} 

फिर, जावा में, आप स्थिर विधि इसी file class से कॉल कर सकते हैं:

import foo.FileKt; 

... 

String someString = "blabla"; 
FileKt.getSomething(someString); 
+0

लेकिन मैं कुछ String.getSomething() को कॉल नहीं कर सकता? जो मैंने सोचा था वह भाषाओं को मिश्रण करना संभव होगा। कोटलिन के साथ स्ट्रिंग क्लास को "बदलना" और जावा में इन परिवर्तनों का उपयोग करें। – Informatic0re

+2

नहीं, आप नहीं कर सकते। पैकेज में विस्तार कार्य/गुण स्थिर विधियों के लिए केवल एक वाक्य रचनात्मक चीनी हैं, वे संबंधित रिसीवर कक्षा को नहीं बदल सकते हैं और नहीं बदल सकते हैं। जावा इस संबंध में एक एक्स्टेंसिबल भाषा नहीं है, जावा भाषा विशिष्टता में कुछ भी नहीं है जो इसकी अनुमति देगा। –

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