Take a look at the code in MultiFinctions.java and you'll see that to
do the subsetp test the Values of the list are converted to strings
with ToString and the type is appended to this string. These strings
are used to compare and determine 'equality'. This probably works
most of the time but external addresses (i.e. Objects like StringBuffer)
convert to string as "External-Address:objectname". This means that
for objects, all those of the same class are considered to be the same.
I think this may be intentional (for performance perhaps),but I also
think it should be done as you say via equals.
Bob.
Bob Johnson wrote:
> Fellow Jessians,
>
> I need to populate multislots with Java objects and subsequently
> perform multislot set comparisons. I was assuming that all
> comparisons on external addresses would be accomplished via the Java
> "public boolean equals(Object obj)" method. The following interaction
> seems to prove otherwise:
>
> ----------------------------------------------------------------------
> Jess, the Java Expert System Shell
> Jess Version 4.3 12/3/98
>
> Output appears in this window.
> Type your input in the one-line input box below.
> Jess> (defglobal ?*buffa* = (new java.lang.StringBuffer "a"))
> TRUE
> Jess> (defglobal ?*buffb* = (new java.lang.StringBuffer "b"))
> TRUE
> Jess> (subsetp (create$ ?*buffa*) (create$ ?*buffb*))
> TRUE
> Jess> (subsetp (create$ "a") (create$ "b"))
> FALSE
> Jess> (call ?*buffa* toString)
> "a"
> Jess> (call ?*buffb* toString)
> "b"
> Jess> (call ?*buffa* equals ?*buffb*)
> FALSE
> Jess>
> ----------------------------------------------------------------------
>
> Am I expecting something that I shouldn't or is this a bug?
>
> Regards,
>
> Bob
>
> ---------------------------------------------------------------------
> To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
> in the BODY of a message to [EMAIL PROTECTED], NOT to the
> list. List problems? Notify [EMAIL PROTECTED]
> ---------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the
list. List problems? Notify [EMAIL PROTECTED]
---------------------------------------------------------------------