Как я могу перехватить этот вызов конструктора в Groovy? - PullRequest
6 голосов
/ 10 августа 2009

В скрипте метод получает параметр типа File и отправляет его в конструктор File. Это взрывается, потому что File не имеет конструктора, который принимает другой файл в качестве параметра.

Как я могу перехватить этот вызов и изменить параметр на parameter.absolutePath?

Например:


def x = new File("some_file")
...
def meth(def param) {
  def y = new File(param) // if param is of type File, this blows up
  // and I'd like groovy's intercepting capabilities to invoke this instead
  // def y = new File(param.absolutePath)
}

Если это невозможно, как я могу добавить этот конструктор:


File(File other) {
  this(other.absolutePath)
}

1 Ответ

7 голосов
/ 10 августа 2009

Мне удалось найти ответ здесь . Вот код, который заставляет работать то, что я написал выше:


File.metaClass.constructor << { File arg ->
  new File(arg.absolutePath)
}
...