Java interop _with method names known at compile time_ is pretty simple, and is the most common case I have seen.
Why do you think it is supposed to be simple to select Java methods based upon the values of variables at run time? Andy On Wed, May 20, 2015 at 7:31 PM, Pierre Thibault <pierre.thibau...@gmail.com > wrote: > This is working well. It is pretty complex to do something that is suppose > to be simple. I am not yet able to understand this code. I find Clojure > hard to learn. > > Thank you Keith. > > Le mercredi 20 mai 2015 21:36:02 UTC-4, Keith Irwin a écrit : >> >> What about eval? >> >> user => (eval `(. ~(resolve (symbol "String")) ~(symbol "format") "%s" >> (to-array ["adasd"]))) >> “adasd" >> >> I have a function form: >> >> (defn static-invoke >> [c meth & args] >> (eval `(. ~(resolve (symbol c)) ~(symbol meth) ~@args))) >> >> Which works for some things: >> >> user => (static-invoke “System” “currentTimeMillis”) >> 1432171781154 >> >> But the String thing was problematic: >> >> user => (static-invoke "String" "format" "a %s” (quote (to-array >> ["foo”]))) >> “a foo” >> >> (This gave a weird error until I quoted the to-array form.) >> >> Still not helpful? >> >> >> On May 20, 2015, at 6:09 PM, Ambrose Bonnaire-Sergeant < >> abonnair...@gmail.com> wrote: >> >> Macros won't work because they are expanded at compile-time. We want to >> choose the method at runtime. >> >> Thanks, >> Ambrose >> >> On Thu, May 21, 2015 at 9:02 AM, Keith Irwin <ke...@zentrope.com> wrote: >> >>> Not sure if this helps, but: >>> >>> user => (eval (symbol "Math" "PI”)) >>> 3.141592653589793 >>> >>> user => (eval `(. ~(resolve (symbol "String")) ~(symbol "format") "%s" >>> (to-array ["adasd"]))) >>> “adasd" >>> >>> Maybe a macro of some sort? >>> >>> (defmacro invoke-static >>> [c meth & args] >>> `(. ~(resolve (symbol c)) ~(symbol meth) ~@args)) >>> >>> user => (invoke-static "java.lang.String" "format" "the %s" (to-array >>> ["foo"])) >>> “the foo" >>> >>> user=> (invoke-static "System" "currentTimeMillis") >>> 1432170076378 >>> >>> That kind of thing? >>> >>> On May 20, 2015, at 4:54 PM, Pierre Thibault <pierre.t...@gmail.com> >>> wrote: >>> >>> I gave it a try: >>> >>> (.. (class String) (getMethod "format" (into-array Class [String >>> (Class/forName "[Ljava.lang.Object;")]))) >>> >>> But I am unable to get the method. I gave up. >>> >>> Le mercredi 20 mai 2015 19:12:05 UTC-4, Pierre Thibault a écrit : >>>> >>>> Hi Laurens, >>>> >>>> My example was not very good. Here another one: >>>> >>>> (.format (first '(String)) "%s" "foo") >>>> >>>> Imagine String is obtained dynamically. I guess then I have to use Java >>>> reflection to do a dynamic invocation. I guess I am confused because >>>> classes in Java are not objects. >>>> >>>> Le mercredi 20 mai 2015 18:40:13 UTC-4, Laurens Van Houtven a écrit : >>>>> >>>>> Hi Pierre, >>>>> >>>>> On May 20, 2015, at 3:38 PM, Pierre Thibault <pierre.t...@gmail.com> >>>>> wrote: >>>>> >>>>> I can do Math/PI put how can I access PI if Math is in a expression >>>>> like '(Math) for example? >>>>> >>>>> >>>>> Can you provide a more specific example? Math/PI is always Math/PI, it >>>>> doesn’t change if you put it in a nested form/expression. >>>>> >>>>> hth >>>>> lvh >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Clojure" group. >>>>> To post to this group, send email to clo...@googlegroups.com >>>>> Note that posts from new members are moderated - please be patient >>>>> with your first post. >>>>> To unsubscribe from this group, send email to >>>>> clojure+u...@googlegroups.com >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/clojure?hl=en >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Clojure" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to clojure+u...@googlegroups.com. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>>> >>>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@googlegroups.com >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+u...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+u...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@googlegroups.com >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+u...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+u...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clo...@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+u...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> >> >> -- > 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 > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- 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 Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.