Re: a simple question about Arrays.asList
Hi Aaron, Thank you for your reply. I was able to understand. Why are you trying to use Arrays#asList btw? There are probably better ways to do what you're trying to do. I just wanted to test reify to implement java.util.Comarator as follows: (java.util.Collections/sort x (reify java.util.Comparator (compare [this x y] (Integer/compare x y Initially, I gave a test data like this. (def x (doto (java.util.ArrayList.) (.add 3)(.add 1)(.add 2))) However, I thought asList is better. Are there better ways to do ? Thanks, MH Since Arrays.asList is a variadic method, the Java compiler is magically creating an array behind the scenes for you when you write Java code invoking it. Clojure does variadic functions differently for native clojure code. To do interop with a Java variadic method have to create the array yourself: (java.util.Arrays/asList (make-array Object 1 2 3)) Why are you trying to use Arrays#asList btw? There are probably better ways to do what you're trying to do. --Aaron On Thu, May 21, 2015 at 5:08 PM, webber tokoma...@gmail.com javascript: wrote: I am trying to use java.util.Arrays/asList in Clojure. (java.util.Arrays/asList 1 2 3) CompilerException java.lang.IllegalArgumentException: No matching method: asList, compiling:(NO_SOURCE_PATH:1:1) (java.util.Arrays/asList 1) ClassCastException java.lang.Long cannot be cast to [Ljava.lang.Object; user/eval7195 (NO_SOURCE_FILE:1) What should I do to work it ? -- 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 javascript: 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 javascript: 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 javascript:. 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.
Re: a simple question about Arrays.asList
Hi Mauricio, The into-array worked fine ! Thanks, MH There are many things that need to be understood in a call like this. First of all, that method receives an array as its argument: https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList(T...) From your first example I think you are trying to translate to clojure the following java call: java.util.Arrays.asList(1, 2, 3); In java this is a varargs call, which means java will change the call to one using an array as the parameter (http://docs.oracle.com/javase/8/docs/technotes/guides/language/varargs.html). So, in order to make that call we need to wrap those arguments in an array. The easiest way to do this would be to wrap the arguments in a vector an turn that into an array: user (java.util.Arrays/asList (into-array [1 2 3])) [1 2 3] If you don't already have a sequence (the vector in the previous example) then you can use a function to do the work: user (defn as-list [ args] (java.util.Arrays/asList (into-array args))) #'user/as-list user (as-list 1 2 3) [1 2 3] user (type (as-list 1 2 3)) java.util.Arrays$ArrayList Cheers, Mauricio -- 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.
Re: a simple question about Arrays.asList
Hi, Try this: (java.util.Arrays/asList (to-array [1 2 3 4])) Regards, rle On 21.05.2015 23:08, webber wrote: I am trying to use java.util.Arrays/asList in Clojure. (java.util.Arrays/asList 1 2 3) CompilerException java.lang.IllegalArgumentException: No matching method: asList, compiling:(NO_SOURCE_PATH:1:1) (java.util.Arrays/asList 1) ClassCastException java.lang.Long cannot be cast to [Ljava.lang.Object; user/eval7195 (NO_SOURCE_FILE:1) What should I do to work it ? -- 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.
Re: a simple question about Arrays.asList
Since Arrays.asList is a variadic method, the Java compiler is magically creating an array behind the scenes for you when you write Java code invoking it. Clojure does variadic functions differently for native clojure code. To do interop with a Java variadic method have to create the array yourself: (java.util.Arrays/asList (make-array Object 1 2 3)) Why are you trying to use Arrays#asList btw? There are probably better ways to do what you're trying to do. --Aaron On Thu, May 21, 2015 at 5:08 PM, webber tokomakoma...@gmail.com wrote: I am trying to use java.util.Arrays/asList in Clojure. (java.util.Arrays/asList 1 2 3) CompilerException java.lang.IllegalArgumentException: No matching method: asList, compiling:(NO_SOURCE_PATH:1:1) (java.util.Arrays/asList 1) ClassCastException java.lang.Long cannot be cast to [Ljava.lang.Object; user/eval7195 (NO_SOURCE_FILE:1) What should I do to work it ? -- 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.
Re: a simple question about Arrays.asList
There are many things that need to be understood in a call like this. First of all, that method receives an array as its argument: https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList(T...) From your first example I think you are trying to translate to clojure the following java call: java.util.Arrays.asList(1, 2, 3); In java this is a varargs call, which means java will change the call to one using an array as the parameter (http://docs.oracle.com/javase/8/docs/technotes/guides/language/varargs.html). So, in order to make that call we need to wrap those arguments in an array. The easiest way to do this would be to wrap the arguments in a vector an turn that into an array: user (java.util.Arrays/asList (into-array [1 2 3])) [1 2 3] If you don't already have a sequence (the vector in the previous example) then you can use a function to do the work: user (defn as-list [ args] (java.util.Arrays/asList (into-array args))) #'user/as-list user (as-list 1 2 3) [1 2 3] user (type (as-list 1 2 3)) java.util.Arrays$ArrayList Cheers, Mauricio -- 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.