Re: cast to sub-class or extending instance of super or a.n.other
Hi Mike,
"Mike Schilling" <mscottschilling@hotmail.com> wrote in message
news:kDhEl.26829$YU2.25763@nlpi066.nbdc.sbc.com...
Richard Maher wrote:
Hi Peter,
Thanks for the reply.
"Peter Duniho" <NpOeStPeAdM@nnowslpianmk.com> wrote in message
news:op.ur83gavi8jd0ej@macbook-pro.local...
On Sat, 11 Apr 2009 18:10:45 -0700, Richard Maher
<maher_rj@hotspamnotmail.com> wrote:
[...]
As I said this has gotta be easier than this so please put me out
of my misery. What's the best way of "new O = instance of A +
stuff. Then still behave like A in Arrays/Collections) Or is there
something more appropriate
than ArrayList?
Hard to say without knowing exactly what you're trying to do.
Ok, cards on the table: - I have an instance of JSObject; I want to
attach an integer to it (oh, but we must know exactly what that
integer does!) Alright, it's a MinimumMessageNumber; any messages
less than this will be ignored. I want to reference the resultant
object/structure by "index" for performance. The ArrayList (I'm
happy
for alternatives and I'm looking at your hashCode) will normally
contain 1 element, and max-out at about10. The minMsgNum is an
appendage/baggage something that I'm sure there's a flash OO term
for
like "orthogonal" that'll give everyone a boner (see, I've been
drinking :-)
Turn things around: create a MessageObject that contains two fields:
1. You minimum message number
2. A reference to your JSObject
MessageObject can also delegate some methods to the JSObject, if
that's convenient.
Make your ArrayList a List or MessageObjects.
If you need them sorted, use a TreeSet instead of an ArrayList and
define MessageObject.compareTo() appopriately.
That's where I got to so far (See below). I'm not totally happy with it for
reasons discussed previously with Peter.
Cheers Richard Maher
public class WindowSlot
{
public JSObject window;
public int minMsgNum;
WindowSlot(JSObject window)
{
this.window = window;
this.minMsgNum = getMsgSeqNum();
}
public JSObject getWindow() {
return this.window;
}
public int getMinMsg() {
return this.minMsgNum;
}
public boolean equals(Object o) {
if (o instanceof WindowSlot)
return window.equals(((WindowSlot)o).getWindow());
else
if (o instanceof JSObject)
return window.equals((JSObject)o);
else
return false;
}
public int hashCode() {
return window.hashCode();
}
}