2012-03-09 38 views
46

我不知道如何讓一個類的對象在斯卡拉的對象類型。好吧,這是一個滿嘴,因爲對象的雙重含義。因此,這裏的例子將失敗:如何獲得classOf的斯卡拉對象類型

object Main 
{ 
    private [this] val TAG = classOf [Main].getName; 
} // Main 

如果Main是類它完美的作品。有任何想法嗎?

回答

67
scala> Main.getClass 
res1: java.lang.Class[_] = class Main$ 
+1

是的。我明白了,現在它變得清晰起來。 'object's只有一個實例,因此你可以調用'getClass'。謝謝。 – Martin 2012-03-09 14:36:54

+4

@Martin其實,我會說這是不正確的。 '對象'根本不具有實例,因爲它們不是類型;它們是(編譯器生成的)類的唯一實例,這就是爲什麼你可以調用'getClass'。 – 2012-03-10 12:17:07

+3

是他們的一種方式來做到這一點作爲編譯時間常量,以便它可以用於Class類型的Java Annotation屬性? – 2016-01-09 20:36:57

6

由於主要是一個對象,爲您的示例工作,只需更換你的作業符合;

private [this] val TAG = this.getClass.getName; 
14

之所以classOf[Main]不起作用是因爲Main不是

類和特性定義類型,對象沒有。