Re: Why doesn't Integer have a setValue(int i), and is there a way of changing its value.
From: Virgil Green (virgil.green_at_bunge.com)
Date: 12/19/03
- Next message: Brian Andersen: "Changing the Classpath at runtime"
- Previous message: Jason: "Re: q javamail compile problem"
- In reply to: natG: "Re: Why doesn't Integer have a setValue(int i), and is there a way of changing its value."
- Next in thread: natG: "Re: Why doesn't Integer have a setValue(int i), and is there a way of changing its value."
- Reply: natG: "Re: Why doesn't Integer have a setValue(int i), and is there a way of changing its value."
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Fri, 19 Dec 2003 00:49:17 GMT
"natG" <natgross.rentalsystems@verizon.net> wrote in message
news:TsnEb.85$0Y2.24@nwrdny03.gnilink.net...
>
> "Bent C Dalager" <bcd@pvv.ntnu.no> wrote in message
> news:brsjhp$t6r$1@tyfon.itea.ntnu.no...
> > In article <vu3hd8iad8546c@corp.supernews.com>,
> > Alex Hunsley <lard@tardis.ed.ac.molar.uk> wrote:
> > >natG wrote:
> > >
> > >> Can you please explain "safer"? Do I practice SAFE Java<g>?
> > >> Seriously, safer in what respect?
> >
> > Two cases spring immediately to mind.
> >
> > If you use instances of the class as keys in a Map, or you have them
> > in a Collection that you expect to always be sorted, then immutability
> > guarantees that your sorting won't inadvertantly get screwed up by
> > someone calling a setter at inopportune times. With immutable keys,
> > the only thing that can mess with your sorting is when the
> > Collection's setters are called. The alternative to immutability would
> > be for the class to fire events whenever you changed something and the
> > Collections classes to be sensitive to such events and be able to
> > auto-resort themselves, but this gets real messy real quick.
>
> Question: Suppose:
> Integer a = new Integer(10);
> Integer b = new Integer(20);
> Integer c = new Integer(30);
> TreeMap tm = new TreeMap();
> tm.put(a);
> tm.put(b);
> tm.put(c);
> And then:
> b = new Integer(60);
> Now, I assume that the second Integer added to the Map, will return an int
value
> of 60.
> If so, what happens to the sort at that point?
> -nat
The assumption is incorrect. b now points to a new object, but the TreeMap
still points to the object originally used to created the Map entry.
Remember, a *copy* of the reference contained by b was passed to the
tm.put() method (pass by value). The reference contained in b cannnot be
changed by the called method and the reference used by the called method
cannot be changed by altering b. And, since Integer is immutable, you cannot
alter the object that both these references reference either. The sort order
is maintained.
- Virgil
- Next message: Brian Andersen: "Changing the Classpath at runtime"
- Previous message: Jason: "Re: q javamail compile problem"
- In reply to: natG: "Re: Why doesn't Integer have a setValue(int i), and is there a way of changing its value."
- Next in thread: natG: "Re: Why doesn't Integer have a setValue(int i), and is there a way of changing its value."
- Reply: natG: "Re: Why doesn't Integer have a setValue(int i), and is there a way of changing its value."
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|