在运行时向java类添加属性和方法

时间:2016-03-06 18:19:05

标签: groovy

我正在尝试将静态方法添加到Java中的现有java.util.Random类。

Random.metaClass.private.static.instance = new Random()
Random.metaClass.public.static.nextInt = { instance.nextInt() }

Random.nextInt() // MissingMethodException

然而,当我这样做时,我得到MissingMethodException。 有什么问题?

1 个答案:

答案 0 :(得分:1)

我觉得这很有趣......如果你编码:

Random.metaClass.static.nextInt = { (new Random()).nextInt() }

Random.nextInt()

你得到StackOverflowError。但是,如果更改静态方法的名称,则可以使用:

Random.metaClass.static.nextInteger = { (new Random()).nextInt() }

Random.nextInteger()

是的,公共/私人不起作用。