/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Hvad er meste rigtigt? (SWING)
Fra : Flare


Dato : 24-05-03 18:49

Og hvad er "forskellen at at fortrække på disse to måder:

public class Foo
{ private JButton Knap;

Foo() { Knap = new Knap(); }
}

public class Foo
{
Foo() { private JButton Knap = new Knap(); }
}

Altså bør man lave pointeren inde i constructeren eller uden for? I C++ er
der jo iben tvivl (uden for)

(Spørgsmålet kommer da jeg har set sidste metode benyttet mange steder)
Mvh
Anders



 
 
Trygleren [9000] (24-05-2003)
Kommentar
Fra : Trygleren [9000]


Dato : 24-05-03 18:53

> Altså bør man lave pointeren inde i constructeren eller uden for? I C++ er
> der jo iben tvivl (uden for)

Det samme gælder for java. Deklarer de variabler
du vil bruge i toppen af din klasse, og ikke i scope.
Eks:
public class Foo
{
private JButton themGirls;

public Foo()
{
themGirls = new JButton("Alex");
}
}//endclass

NB. Jeg hader også Alex - det er blot et tilfældigt eksempel
og jeg vil aldrig høre et ord om andet!!

--
"Sic gorgiamus allos subjectatos nunc"
Lars 'Trygleren' Winther

www.hesteskelet.dk <-- Jeg er bedst !!



Trygleren [9000] (24-05-2003)
Kommentar
Fra : Trygleren [9000]


Dato : 24-05-03 18:56

> Det samme gælder for java. Deklarer de variabler
> du vil bruge i toppen af din klasse, og ikke i scope.

Det nye komma græder vist nu =)

--
"Sic gorgiamus allos subjectatos nunc"
Lars 'Trygleren' Winther

www.hesteskelet.dk <-- Jeg er bedst !!



Flare (24-05-2003)
Kommentar
Fra : Flare


Dato : 24-05-03 19:00

> Det samme gælder for java. Deklarer de variabler
> du vil bruge i toppen af din klasse, og ikke i scope.

Ja ikke. Hvordan kan det egenlig lade sig gøre. bliver pointeren ikke
"ugyldig" efter constructoren bliver forladt? Eller er jeg bare C++-skadet?

Mvh
Anders



Jonathan Stein (24-05-2003)
Kommentar
Fra : Jonathan Stein


Dato : 24-05-03 20:51

Flare wrote:

> > Det samme gælder for java. Deklarer de variabler
> > du vil bruge i toppen af din klasse, og ikke i scope.
>
> Ja ikke. Hvordan kan det egenlig lade sig gøre. bliver pointeren ikke
> "ugyldig" efter constructoren bliver forladt? Eller er jeg bare C++-skadet?

Variablen (som godt kan opfattes som en pointer til objektet) lever kun i det
scope, den er deklareret i, men objektet lever videre så længe der er en
reference til det.
I det aktuelle tilfælde lyder det som om objektet kunne være indsat i en
dialog-boks.

Jeg hylder princippet om at deklarere en variabel i det scope, hvor den skal
bruges.

M.v.h.

Jonathan

--
Nyt alternativ til egen server: JSP Enterprise hotel med adgang til
Enterprise Java Beans, egen Java Virtual Machine og egen IP-adresse
(giver mulighed for eget SSL-certifikat).
http://www.jsp-hotel.dk/



Flare (24-05-2003)
Kommentar
Fra : Flare


Dato : 24-05-03 21:32

> Variablen (som godt kan opfattes som en pointer til objektet) lever kun
i det
> scope, den er deklareret i, men objektet lever videre så længe der er en
> reference til det.

Det lyder (undskyld) enormt keitet. At man kan have et objeket der lever,
men som man reelt er afskåret fra at kunne snakke med. Er det ikke bedre at
oprette Objekt pointeren (det må være en pointer?) som private i den klasse.

Det lyder ikke særlig extendible at lave fx. et JPanel med nogle knapper
hvor hele molevitten er lavet i constructoren. Det gå jo fint så længe man
ikke skal ændre navn på knap osv. Men hvis nu?

Jeg er helt ny i Java, og kommer fra C++. Har jeg misforstået noget i
ovenstående? Vil bare ikke lægge mig dårlige vaner fra start :)

Mvh
Anders



Soren Davidsen (25-05-2003)
Kommentar
Fra : Soren Davidsen


Dato : 25-05-03 06:01

"Flare" <anders@pings.dk> writes:

> > Variablen (som godt kan opfattes som en pointer til objektet) lever kun
> i det
> > scope, den er deklareret i, men objektet lever videre så længe der er en
> > reference til det.
>
> Det lyder (undskyld) enormt keitet. At man kan have et objeket der lever,
> men som man reelt er afskåret fra at kunne snakke med. Er det ikke bedre at
> oprette Objekt pointeren (det må være en pointer?) som private i den klasse.

Nu er det Java, saa det hedder referancer . En god tommerfinger-regel
er som Jonathan skrev at tage det mindste scope som muligt. Man kan altid
senere udvide scope hvis man faar behov for det (editorer som IntelliJ
og JDE har endda funktioner til netop dette). Det goer at garbage-collectoren
hurtigere kan tage objektet tilbage. Hvis du har en private pointer til dit
objekt, tilfoejer du bare endnu en referance for garbage collectoren at holde
styr paa om er frigivet.

> Det lyder ikke særlig extendible at lave fx. et JPanel med nogle knapper
> hvor hele molevitten er lavet i constructoren. Det gå jo fint så længe man
> ikke skal ændre navn på knap osv. Men hvis nu?

Du har vist lige selv svaret - det kommer an paa hvad du skal bruge
det til .

En dialogboks hvor du ved at der ikke skal laves andet end en knap
og noget tekst ville jeg synes var mere elegant at lave kun i
konstruktoeren.

Af lign. idiomer som jeg har set meget ofte brugt er:
new Thread(minRunnable).start();


Mvh,

--
___
Soren Davidsen / o\
Deliver yesterday, code today, think tomorrow. (_____)
__ http://www.tanesha.net/ _________________________________(___)_______

Jonathan Stein (26-05-2003)
Kommentar
Fra : Jonathan Stein


Dato : 26-05-03 18:27

Flare wrote:

> > Variablen (som godt kan opfattes som en pointer til objektet) lever kun
> i det
> > scope, den er deklareret i, men objektet lever videre så længe der er en
> > reference til det.
>
> Det lyder (undskyld) enormt keitet. At man kan have et objeket der lever,
> men som man reelt er afskåret fra at kunne snakke med.

Man er ikke afskåret fra at snakke med objektet, for der findes jo en
reference til det der, hvor man har brug for at tilgå det.
Indsætter man f.eks. en knap i en dialog, vil dialogen snakke med objektet.
Når dialogen dør, er der ikke længere brug for knappen, og så er der heller
ingen grund til at have nogle referencer til den.

> Er det ikke bedre at oprette Objekt pointeren (det må være en pointer?) som
> private i den klasse.

Nej, generelt er det ikke bedre. I nogle tilfælde er det måske bedre, og i
andre er det usmart. - Og meget kommer an på smag og behag.

> Det lyder ikke særlig extendible at lave fx. et JPanel med nogle knapper
> hvor hele molevitten er lavet i constructoren. Det gå jo fint så længe man
> ikke skal ændre navn på knap osv. Men hvis nu?

Hvis nu "hvis nu" opstår, ændrer man sin kode. Hvis nu man får brug for at
have en reference til nogle knapper, kunne jeg godt være konsekvent og lave en
reference til alle knapper, men det betyder ikke, at jeg altid vil gøre det i
enhver dialog.

> Jeg er helt ny i Java, og kommer fra C++. Har jeg misforstået noget i
> ovenstående? Vil bare ikke lægge mig dårlige vaner fra start :)

Kunsten er vel netop at vurdere hvad der er bedst i den givne situation - og
der er som bekendt mange meninger om kunst.

M.v.h.

Jonathan

--
Nyt alternativ til egen server: JSP Enterprise hotel med adgang til
Enterprise Java Beans, egen Java Virtual Machine og egen IP-adresse
(giver mulighed for eget SSL-certifikat).
http://www.jsp-hotel.dk/



Michael Banzon (24-05-2003)
Kommentar
Fra : Michael Banzon


Dato : 24-05-03 19:56

:verks "]0009[ nerelgyrT"

> NB. Jeg hader også Alex - det er blot et tilfældigt eksempel
> og jeg vil aldrig høre et ord om andet!!

Jeg syn's Alex er sød, jeg vil ha' Alex med hjem

> www.hesteskelet.dk <-- Jeg er bedst !!

.... ... der mangler dukker!!! Mere dukker!!!
Mere mere dukker dukker!!!

/ Michael



Trygleren [9000] (24-05-2003)
Kommentar
Fra : Trygleren [9000]


Dato : 24-05-03 20:24

> Jeg syn's Alex er sød, jeg vil ha' Alex med hjem

LOL !!

> ... ... der mangler dukker!!! Mere dukker!!!
> Mere mere dukker dukker!!!

10-4 ! De er der inden næste uges udløb =)

--
"Sic gorgiamus allos subjectatos nunc"
Lars 'Trygleren' Winther

www.hesteskelet.dk <-- Jeg er bedst !!



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408193
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste