1
如何才能在類的字段聲明中編寫this.class
並且它實際上可以實現預期的效果?這段代碼如何在groovy中工作?
例如爲:
private static final logger = Logger.getLogger(this.class)
P.S:似乎是Schroedinbug的好地方。 :)
如何才能在類的字段聲明中編寫this.class
並且它實際上可以實現預期的效果?這段代碼如何在groovy中工作?
例如爲:
private static final logger = Logger.getLogger(this.class)
P.S:似乎是Schroedinbug的好地方。 :)
在Groovy this
被綁定到靜態上下文中的類,你可以調用它的靜態方法。 Logger.getLogger(this.class)
將相當於Logger.getLogger(Class)
。
class C {
static final staticThis = this
static final thisClass = this.getClass()
static final someResult = this.someMethod()
static someMethod() { 'static' }
}
assert C.staticThis == C.class
assert C.thisClass == Class
assert C.someResult == C.someMethod()
Justin的答案是正確的,在靜態情況下this
綁定到當前類的Class
對象,因此,您可以替換上面代碼:
private static final logger = Logger.getLogger(this)
可以放心地複製不同於:
private static final logger = Logger.getLogger(MyClass.class)
Groovy其實充滿了驚喜。對於每個類都使用this.class,只是在一段時間後纔開始指出this.class可能不相關。 –