<div dir="ltr"><div>You may have luck by providing a list. However, I see a deeper problem. Serializable is a marker interface: it has no methods, it only declares the type serializable. However, you cannot just declare that an object is serializable to make it so; all its components must be serializable as well. This includes the invocation handler that ABCL creates under the cover, as well as all the Lisp objects that you use for the implementation, particularly functions and closures. And, bad news – those aren't serializable. So, if Serializable is a requirement because those instances will effectively be serialized – e.g., to persist them to a file or to send them over the network – you're out of luck.</div><div><br></div><div> Ages ago I had started a branch to make most Lisp objects serializable, but I don't remember how far I got. I don't think it was ever mature enough to be merged, but many years have passed.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 30 Jul 2020 at 05:22, Steven Nunez <<a href="mailto:steve_nunez@yahoo.com">steve_nunez@yahoo.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:13px"><div></div>
        <div dir="ltr">Apologies, when I said "<span><span>but I can't see adding multiple implementations</span></span>", I meant multiple interfaces.<br></div><div><br></div>
        
        </div><div id="gmail-m_4140538131463595018yahoo_quoted_6238679046">
            <div style="font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;color:rgb(38,40,42)">
                
                <div>
                    On Thursday, July 30, 2020, 11:19:07 AM GMT+8, Steven Nunez <<a href="mailto:steve_nunez@yahoo.com" target="_blank">steve_nunez@yahoo.com</a>> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div id="gmail-m_4140538131463595018yiv2307274956"><div><div style="font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:13px"><div dir="ltr">Is there a way to implement multiple interfaces on a single Java proxy? This code almost works:<br></div><div><br></div><div dir="ltr"><div><font face="lucida console, sans-serif">(java:jinterface-implementation<br> "org.apache.spark.api.java.function.Function"<br><br></font><div><font face="lucida console, sans-serif"> "call" (lambda (s) (length s)))</font></div><div><br></div><div dir="ltr">except that the proxy also needs to implement Serializable. The <a rel="nofollow" href="https://abcl.org/trac/browser/trunk/abcl/src/org/armedbear/lisp/java.lisp#L118" target="_blank">jproxy code</a> in java.lisp seems to suggest that multiple implementations are allowed:</div><div dir="ltr"><br></div><div dir="ltr"><div><font face="lucida console, sans-serif"><span>(</span><span>defgeneric</span> <span>jmake-proxy</span> <span>(</span><span>interface</span> <span>implementation</span> <span>&optional</span> <span>lisp-this</span><span>)</span></font></div><div><font face="lucida console, sans-serif"><span>  (</span><span>:documentation</span> <span>"Returns a proxy Java object implementing the provided interface(s)...</span></font></div><div><span><br></span></div><div dir="ltr"><span>but I can't see adding multiple implementations in the code. I see there's a few jmake-proxy methods in there though: are there any documentation or examples for their usage? Lsw2 doesn't use this at all and I can't find any other good examples of using ABCL.<br></span></div><div dir="ltr"><span><br></span></div><div dir="ltr"><span>Multiple interfaces from the jinterface-implementation function would be ideal, as the above code could then be wrapped with a macro to produce a 'spark-lambda' and be used nearly like the regular ABCL lambda.</span></div><div dir="ltr"><span><br></span></div><div dir="ltr"><span><br></span></div><div><br></div></div></div><div><br></div></div></div></div></div></div>
            </div>
        </div></div></blockquote></div>