2012-06-11 15 views
5

अगर मैं एक पैकेज वस्तुपैकेज ऑब्जेक्ट्स कब शुरू होते हैं?

package com.something.else 

package object more { 
    val time = System.currentTimeMillis 
    // ... other stuff ... 
} 

जो तब स्रोत कोड में कहीं आयात किया जाता है परिभाषित करते हैं।

import com.something.else.more 

इस ऑब्जेक्ट (और इसके सदस्यों) ने आरंभ/निर्माण कब किया है?

दूसरे शब्दों में, more.time का मूल्य निर्धारित करता है?
क्या यह मूल्यांकन किया जाता है जब कार्यक्रम पहली बार शुरू होता है? या पहली बार इसे एक्सेस किया गया है? या पहली बार more उपयोग किया गया है?

package something 

package object more { 
    val time = System.currentTimeMillis 
} 

// in separate file: 
package something.more 

object Test extends App { 
    val now = System.currentTimeMillis 

    Thread.sleep(1000) 

    println(now) 
    println(time) 
} 

देता है::

+0

मेरा अनुमान तब होगा जब क्लास लोडर पहले लोड करता है, लेकिन मैं अभी यह जांच नहीं सकता ... –

उत्तर

7

यह जांच करने के लिए आसान है

1339394348495 
1339394349496 

दूसरी बार है ~ 1000 एमएस बाद में है, इसलिए जब पैकेज वस्तु पहले से पहुंचा जाता है यह है, के रूप में यह किसी के साथ हो सकता है अन्य वस्तु।

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