At my day job, we've always used a custom classloader to get around that asymmetry. -- Aaron
On Thu, Jul 30, 2009 at 9:51 AM, Rich Hickey <richhic...@gmail.com> wrote: > > > > On Jul 29, 6:09 pm, Jason Wolfe <jawo...@berkeley.edu> wrote: > > Is this a bug? > > > > user> (eval `(make-array ~Byte/TYPE 2)) > > ; Evaluation aborted. (ExceptionInInitializerError) > > > > Compare: > > > > user> (eval `(make-array ~Byte 2)) > > #<Byte[] [Ljava.lang.Byte;@26fcfd5c> > > > > user> (eval `(make-array Byte/TYPE 2)) > > #<byte[] [...@1f0feb6e> > > > > user> (make-array (eval Byte/TYPE) 2) > > #<byte[] [...@7ce49289> > > > > If not, can someone please help me understand what's going on here? > > > > Yes, currently you cannot embed constants of primitive Class types. > This arises from an asymmetry in Java: > > user=> (.getName Byte) > "java.lang.Byte" > > user=> (Class/forName "java.lang.Byte") > java.lang.Byte > > user=> (.getName Byte/TYPE) > "byte" > > user=> (Class/forName "byte") > java.lang.ClassNotFoundException: byte (NO_SOURCE_FILE:0) > > A patch to support reading, and embedded constants, of primitive Class > objects would be welcome. The current print-dup support won't do it. > > If anyone is interested in contributing this patch please bring it up > on the clojure-dev group before proceeding and I can give you some > guidance as to what needs to be changed. > > Thanks for the report, > > Rich > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---