Groovy Mixin на экземпляре (динамический Mixin)

Я пытаюсь достигнуть следующего:

class A {
  def foo() { "foo" }
}

class B {
  def bar() { "bar" }
}

A.mixin B
def a = new A()

a.foo() + a.bar()

с одной значительной разницей - я хотел бы сделать смешивание на экземпляре:

a.mixin B

но это приводит к

groovy.lang.MissingMethodException: No signature of method: A.mixin() is applicable for argument types: (java.lang.Class) values: [class B]

Существует ли способ добраться, эта работа любят предложенный в Mixins JSR Groovy?

6
задан tim_yates 21 March 2010 в 18:39
поделиться

1 ответ

Это можно сделать, начиная с Groovy 1.6

Вызов миксина для метакласса экземпляра следующим образом:

class A {
  def foo() { "foo" }
}

class B {
  def bar() { "bar" }
}

def a = new A()
a.metaClass.mixin B

a.foo() + a.bar()
8
ответ дан 16 December 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: