Groovyで既存のクラス(java.io.File)にプロパティを追加

Groovy, Java, 未分類

既存のクラスにプロパティを追加するには、metaClass.defineメソッドを使用すればよい。

以下の例では、 java.lang.Object にメソッドを追加している。

#!/usr/bin/env groovy
Object.metaClass.define {
    testprop = null
}
def x = new Object()
def y = new Object()
x.testprop = "aaa"
assert x.testprop == "aaa"
y.testprop = "bbb"
assert x.testprop == "aaa"
assert y.testprop == "bbb"
def z = new Object(testprop: "ccc")
assert z.testprop == "ccc"

java.io.File クラスにプロパティを追加するにはどうしたらよいか分からなかったのでメモ。

これで、 Rails の黒魔術のようにJavaの組み込みクラスにメソッドを追加することができる。
java.lang.String にもメソッド追加できる。

Groovy, Java, 未分類

Posted by genzouw