2016-07-06 38 views
5

में शीर्ष स्तर के फ़ंक्शन से कक्षा संदर्भ प्राप्त करें मैंने एक संक्षिप्त कार्यक्रम लिखा है जिसमें किसी भी कक्षा की आवश्यकता नहीं होती है और बदले में केवल शीर्ष स्तर के कार्यों की सहमति होती है।कोटलिन

जावा कोड से अपने जार के स्थान खोजने के लिए आप लिखते हैं

MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath() 

लेकिन जैसा कि मैं अपने kotlin कोड में किसी भी कक्षा की घोषणा नहीं था कि मैं कैसे एक वर्ग संदर्भ प्राप्त करने के लिए पता नहीं है।

मेरे वर्तमान कार्यान्वयन इस

class Ref 
val jarPath = Ref::class.java.protectionDomain.codeSource.location.toURI().path 

जो स्पष्ट रूप से बहुत बुरा कोड है।

तो मेरा सवाल यह है कि, मैं बिना किसी अनचाहे वर्गों की घोषणा किए कोटलिन में कक्षा संदर्भ कैसे प्राप्त करूं। कोई संकेत सराहना :)

+0

कोड है कि बुरा नहीं है,) – voddan

उत्तर

7

आप एक वर्ग घोषणा कर सकते हैं, लेकिन एक गुमनाम एक object expression का उपयोग कर, इतना है कि यह आसपास के कोड को दिखाई नहीं होगा:

val jarPath = object {}.javaClass.protectionDomain.codeSource.location.toURI().path