Thanks a lot, Colin! It is good to get my beliefs confirmed :-) (And you too, tbc++, for contributing!)
On Friday, August 5, 2016 at 3:30:22 AM UTC+2, Colin Fleming wrote: > > The JVM does retain some generic information (see for example Neil > Gafter's Super Type Tokens), in particular Type instances can retain > generic info which is what the linked code is using. It might be possible > to recreate this in pure Clojure but IMO it's likely to be more difficult > than it's worth - all the reflective Type code is very fiddly. YMMV, of > course. > > On 5 August 2016 at 11:18, Timothy Baldridge <tbald...@gmail.com > <javascript:>> wrote: > >> I'd dig into it a bit more, since the JVM doesn't support generics >> either. So if there's an api looking for some marker interfaces, it might >> be possible to implement those interfaces as well. There's probably a way >> to do this in pure Clojure. >> >> On Thu, Aug 4, 2016 at 4:55 PM, Colin Fleming <colin.ma...@gmail.com >> <javascript:>> wrote: >> >>> Hi Jakub, >>> >>> Yes, that is correct - Clojure interop only deals with raw classes, it >>> has no concept of generics. Java is the way to go here. >>> >>> Cheers, >>> Colin >>> >>> On 5 August 2016 at 09:28, Jakub Holý <jakubh...@gmail.com <javascript:> >>> > wrote: >>> >>>> I need to implement the interface >>>> javax.websocket.MessageHandler.Whole<String> - the type parameter is >>>> important since the Java code uses reflection to check >>>> <https://github.com/tyrus-project/tyrus/blob/373fab2f47ff06167d6ced8475085004ffbbfd5a/core/src/main/java/org/glassfish/tyrus/core/ReflectionHelper.java#L528> >>>> >>>> whether the result is instanceof java.lang.reflect.ParameterizedType. >>>> >>>> I believe I cannot use proxy or any other available Clojure mechanism >>>> as they do not support generics. Is that correct? >>>> >>>> I believe that the only (and best) solution is to implement the >>>> interface in Java and then possibly extend the resulting class: >>>> >>>> public class TextMessageHandler implements >>>> javax.websocket.MessageHandler.Whole<String> { >>>> public void onMessage(String message) { >>>> } >>>> } >>>> ---- >>>> (proxy [TextMessageHandler] [] >>>> (onMessage [msg] >>>> (println "received message(" (.getClass msg) "):" msg))) >>>> >>>> >>>> Correct? >>>> >>>> Thank you! >>>> >>>> Cheers, Jakub Holý >>>> >>>> -- >>>> 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 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. >>> >> >> >> >> -- >> “One of the main causes of the fall of the Roman Empire was that–lacking >> zero–they had no way to indicate successful termination of their C >> programs.” >> (Robert Firth) >> >> -- >> 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.