在Java中,我會寫logger.getLogger(NameOfClass.class)
。如何在Scala中編寫相同的代碼?什麼是Scala的Java類類型的模擬,例如讓Foo.class?
2
A
回答
8
你可以嘗試:
logger.getLogger(getClass())
或:
logger.getLogger(classOf[NameOfClass])
作爲一個側面說明,ScalaLogging提供使用記錄器與類名,但沒有所有的樣板的一個很好的和簡單的方法像普通的java一樣。你在你的類的設置得到正確記錄,所有你需要做的是延長特質Logging
:
class MyClass extends Logging {
logger.debug("This is very convenient ;-)")
}
1
不要忘記定義單同伴對象記錄器:
object MyClass {
// Commons logging
private val clLogger = LogFactory.getLog(getClass())
// java.util.logging
private val juLogger = Logger.getLogger(getClass().toString)
}
class MyClass {
import MyClass._
...
}
的人們應該這樣做的原因是,如果您將該字段放置在class
上,則該實例字段會在該類的對象的每個new
實例上返回記錄器工廠。對於某些類,這可能是不必要的/不可接受的性能。
在這種情況下,Scala對類(靜態)字段和實例字段的分離使得這比使用Java所做的更加艱鉅。其中一種情況下斯卡拉不具備所有優勢:
class MyClass {
// Commons logging
private static final Log clLogger = LogFactory.getLog(MyClass.class)
// java.util.logging
private static final Logger juLogger = Logger.getLogger(MyClass.class.toString)
...
}
+0
這有點奇怪,只是對於一些靜態字段,我已經定義了另一個更多的類... –
+0
它很笨拙,但是替代方法會在類實例的每個'new'上引入運行時開銷(日誌工廠)。 –
相關問題
- 1. 什麼是類型和什麼是類型構造函數scala
- 2. Scala中的「底層類型」是什麼?
- 3. Scala REPL打印的類型是什麼?
- 4. 什麼是不同類型的java類?
- 5. 什麼是Scala的類
- 6. 在Scala中模擬案例類:Mockito
- 7. 什麼是310 OffsetDate類型的用例?
- 8. 該類型的實例是什麼?
- 9. 什麼是結構類型scala語法定義的actuall類?
- 10. 什麼是`this`關鍵字的Scala類型編程類比?
- 11. 如何模擬內置類型的子類(例如TextBox)?
- 12. Java通用類型和數組類型,不是你在想什麼(例如,來自泛型類型的數組)
- 13. 什麼是Java中的「SAM類型」?
- 14. 什麼是Java中的文字類型?
- 15. 什麼樣的Java類型是「[B」?
- 16. Scala - 什麼是類型輸入,Input.Source和Input.Offset是什麼意思?
- 17. 什麼是Java的多類型轉換的目的是什麼?
- 18. 模板類型的含義是什麼?
- 19. npm模塊的類型是什麼?
- 20. 此模板中的類型是什麼?
- 21. 什麼是SQLAlchemy的模型類?
- 22. Scala的類型類
- 23. 類類型Scala的
- 24. 什麼是oracle數據類型raw的java類型等價物?
- 25. Scala中的「不是簡單類型」警告是什麼意思?
- 26. 什麼是抽象數據類型?它是Java中的類嗎?
- 27. 什麼類型的webapp是Scala的Lift框架的甜蜜點?
- 28. 什麼是單例類型數組?
- 29. Scala REPL中的當前類是什麼?
- 30. 爲什麼不能模板非類型參數是類類型
爲什麼你稱它爲* binary *? –
可能重複[什麼是Java的ClassName.class的Scala等價物?](http://stackoverflow.com/questions/1166732/what-is-the-scala-equivalent-of-javas-classname-class) –