logo       

RE: calling methods that take an array or list of interfaces: msg#00108

lang.groovy.user

Subject: RE: calling methods that take an array or list of interfaces

Maybe I am on the wrong track here, but in toArray() you need to pass in an
array.

How can you create a new array of interfaces? new WSite[...] creates the
real array (which implements IWSite, and has instanceof).

Dion

-----Original Message-----
From: Randy Thornton
[mailto:randy_thornton-j507d6adJKUVOD6bQOMgHhL4W9x8LtSr@xxxxxxxxxxxxxxxx]
Sent: Thursday, October 14, 2004 5:05 PM
To: user-i9PBDF1N6cxnkHa44VUL00B+6BGkLq7r@xxxxxxxxxxxxxxxx
Subject: RE: [groovy-user] calling methods that take an array or list of
interfaces

No, the prototype is "public void setSites(IWSite[] sites)." It takes
IWSite[]. If you look in the error you will see that the values are
actually WSite. Groovy just can't map them to IWSite[]. I am really
beginning to believe this is a bug and not just a syntax problem. I just
find it hard to believe I am the first person to try this.

Randy

-----Original Message-----
From: Dion Almaer [mailto:dion-4eS6uFwS6GLQT0dZR+AlfA@xxxxxxxxxxxxxxxx]
Sent: Thu 10/14/2004 3:54 PM
To: user-i9PBDF1N6cxnkHa44VUL00B+6BGkLq7r@xxxxxxxxxxxxxxxx
Cc:
Subject: RE: [groovy-user] calling methods that take an array or
list of interfaces




Shouldn't it be:

criteria.setSiteUuids( wsites.toArray(new WSite[wsites.size()]) );

I.e. new Wsite not the interface.

Dion


-----Original Message-----
From: Randy Thornton
[mailto:randy_thornton-j507d6adJKUVOD6bQOMgHhL4W9x8LtSr@xxxxxxxxxxxxxxxx]
Sent: Thursday, October 14, 2004 3:36 PM
To: user-i9PBDF1N6cxnkHa44VUL00B+6BGkLq7r@xxxxxxxxxxxxxxxx
Subject: [groovy-user] calling methods that take an array or list of
interfaces

This is related to the email I sent a few days ago. I can't figure
out how
to pass arrays or list of interface pointers.

Here is the method prototype:
public void setSites(IWSite[] sites) {...}

and the class declaration of WSite and IWSite:

public class WSite implements IWSite {}

This is the line from the script where wsites is an ArrayList of
IWSite
objects.

criteria.setSiteUuids( wsites.toArray(new IWSite[wsites.size()]) );

And finally the error that I have become so frustrated with.
No signature of method
com.perfretail.k2v1.wake.reports.WReportsCriteria.setSiteUuids() is
applicable for argument types:
([Lcom.perfretail.k2v1.wake.api.IWSite;)
values: [[com.perfretail.k2v1.wake.core.WSite@8f83a9[name=Store
100,uuid=afefe88416e94d9449186e9],
com.perfretail.k2v1.wake.core.WSite@cf590[name=Store
200,uuid=afefe88416e94fb44918796]]]
As you can see it is an array of WSite, but it can't resolve it to
IWSite.
The same behavior exists for methods that take in a List as an
argument as
my previous email.











<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise