Tengo un problema al usar constructores con una clase Groovy.Constructores Groovy
Tengo una clase Data
en un archivo llamado Data.groovy
con una clase interna ContentEntry
. Quiero inicializar ContentEntry
instancias de un método Data
:
static void initContent(nid, uid)
{
curContent = new ContentEntry()
curContent.nid = nid;
curContent.uid = uid;
}
con ContentEntry
define como:
class ContentEntry
{
public int nid, uid
private tags = [:]
public ContentEntry()
{
}
ContentEntry(int nid, int uid)
{
this.nid = nid
this.uid = uid
}
//omitted rest of the class
Pero cuando se ejecuta el proyecto me da el siguiente error:
Exception in thread "main" org.codehaus.groovy.runtime.metaclass.MethodSelectionException:
Could not find which method <init>() to invoke from this list:
public it.softit.Data$ContentEntry#<init>(it.softit.Data, int, int)
public it.softit.Data$ContentEntry#<init>(it.softit.Data)
¡Es como si los constructores implícitamente necesitaran una instancia de la clase externa pasada como parámetro. Me pregunto por qué ...
3 food anwers thanks, upvoted all you you .. En 6 años de programación en Java nunca se supo esto de la referencia implícita. Lo solucioné declarándolos como clases normales ya que no puedes declararlos estáticos en groovy. – Jack