On Wed, Nov 19, 2008 at 4:00 AM, Michael Wood <[EMAIL PROTECTED]> wrote:
>
> Exception in thread "main" java.lang.IllegalArgumentException: No
> matching method found: getString for class
> org.dcm4che2.data.BasicDicomObject (dinfo.clj:0)

This was discussed on IRC:

http://clojure-log.n01se.net/date/2008-11-19.html#15:46a-16:07

So it looks like there may be no good, general, solution.  Unless or
until there is, there's a work-around using reflection manually.

Start by getting a reference to the Method you're trying to call:

(def bdo-get-string (.getMethod (identity BasicDicomObject)
"getString" (into-array [Integer/TYPE])))

The three args to .getMethods are:
1. The class (use identity to get the instance of Class instead of
trying to BasicDicomObject's non-existent getMethod method)
2. The name of the method as a string, "getString"
3. An array of the argument types for the method you want to call.
Use Interger/TYPE to specify the primitive 'int'

You can then call the method you found above using the .invoke method
of the Method instance:

(.invoke bdo-get-string (BasicDicomObject.) (to-array [0x00100010]))

The .invoke method always takes 3 args:
1. The Method instance we got earlier
2. The instance of the class you want call (in this example I created
a new instance on the spot)
3. And array holding all the args to pass to the Method.

Not too pretty, but of course if you find you actually need this you
can wrap either step in a function to make calling it more pleasant.

--Chouser

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to