Loading...

実行中のgroovyの行番号を知るためのもうひとつの方法 - これだといいかも。

前回、 プログラマメモ2: 実行中のgroovyの行番号を知るためのもうひとつの方法 - でも、だめなようです。、のコードより正確になっています。

H氏からのいただきものコードです。

def getCurrentLineNumber() {
def the_thisClassName = getClass().getName()
def the_inThisObject = new Throwable().getStackTrace().findAll {the_stackTraceElement ->
the_thisClassName.equals(the_stackTraceElement.getClassName())
}
return the_inThisObject[1].getLineNumber()
}


実行しているスクリプト自身でマッチさせていますね。

使用方法は、スクリプトから上記のメソッドを呼び出せばその呼び出しした行がわかります。

ちなみに、クロージャーの中から実行されいる場合、this.getClass()ではスクリプトのクラスがわかりませんが、そういう場合は、
owner.class.name
で実行しているスクリプトのクラスがみつけれるようですね。

あとgroovyだとisというメソッドがありますね。
#これってなんでしょうかね?

ちょっと実験コード
new Throwable().getStackTrace().each(){ s ->
if(s.getClassName().is(owner.class.name)){
println "o_o! ${s}"
}
}
リアクション: 
groovy 7864455779891284749

コメントを投稿

ホーム item

このブログを検索

Random Posts

Popular Posts

Labels

ADS