2009-08-10 11 views
6

In uno script, un metodo riceve un parametro di tipo File e lo invia al costruttore di File. Questo esplode perché File non ha un costruttore che prende un altro file come parametro.Come posso intercettare questa chiamata del costruttore in Groovy?

Come posso intercettare questa chiamata e modificare il parametro su parameter.absolutePath?

Ad esempio:


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) 
} 

Se ciò non può essere fatto, come avrei potuto aggiungere questo costruttore:


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

risposta

6

sono riuscito a trovare la risposta here. Ecco il codice che rende ciò che ho scritto sopra:


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