Avatar billede touel Nybegynder
25. oktober 2004 - 15:27 Der er 13 kommentarer og
1 løsning

reference variabler

Hej

Jeg kan ikke forstå at når man opretter en reference variabel af ex typen InputStreamReader in, at der så til in,ikke refereres til et objekt men derimod kan man bare skrive

  InputStreamReader in = client.Getpath ().

Hvordan skal denne sætning forståes. Jeg havde troet at alle reference variabler skulle referere til et objekt før de kunne bruges.
Avatar billede arne_v Ekspert
25. oktober 2004 - 15:36 #1
Referencer skal referere til et objekt før de kan bruges (uden at give NullPointerException !).

Men der er flere muligeheder:

// referere til et helt nyt objekt
X x = new X();

// referere til et allerede kendt objekt
X x2 = x1;

// referere til noget som returneres fra en metode
X x = y.getX();
Avatar billede arne_v Ekspert
25. oktober 2004 - 15:36 #2
Den sætning du angiver er et eksempel på det sidste.

GetPath() returnerer en InputStreamReader og den lader man in
referere til.
Avatar billede rbj_fp Nybegynder
25. oktober 2004 - 15:36 #3
Når du skriver
InputStreamReader in;

svare det til at du skriver InputStreamReader in = Null; (cirka kan ikke huske den korrekte måde null skrives i java)

Og metoden client.Getpath() burde returere en InputStreamReader
Avatar billede arne_v Ekspert
25. oktober 2004 - 15:37 #4
rettelse:

GetPath() returnerer en reference til en InputStreamReader og den lader man
in referere til.
Avatar billede arne_v Ekspert
25. oktober 2004 - 15:38 #5
Det er null i Java/C# og NULL i C/C++ og Nothing (case insenstivt) i VB/VBS/VB.NET
Avatar billede touel Nybegynder
25. oktober 2004 - 21:57 #6
til arne v

I den første kommentar du kommer med, siger du tilsidst :

X x=y.getX();

Kunne du udspecifere lidt mere om hvad der konkret sker der. Jeg tror at det er her at jeg ikke rigtig forstår hvad der sker og hvorfor det sker sådan.
Ellers mange tak for hjælpen og forståelsen
Avatar billede arne_v Ekspert
25. oktober 2004 - 22:06 #7
Der er et objekt y som er af en klasse der har en metode getX der returnerer
en reference til et objekt af typen X
Avatar billede touel Nybegynder
26. oktober 2004 - 14:39 #8
Enig arne... men hvorfor skal objektet x bruge en reference fra objekt y ?
Hvorfor kan x ikke bare få reference til nogle af klassen Xs metoder ?
Avatar billede arne_v Ekspert
26. oktober 2004 - 14:45 #9
objektet y laver et objekt af typen X - det er helt normalt - Factory pattern og
den slags bruger det hele tiden
Avatar billede arne_v Ekspert
21. november 2004 - 21:00 #10
OK ?
Avatar billede touel Nybegynder
22. november 2004 - 15:12 #11
Til arne v

Mange tak for hjælpen. Jeg må dog erkende at jeg stadig ikke har fuldt ud forstået disse reference variablers virkemåde. Jeg må heller få fat på nogen og få dem til at give mig nogen eksempler, så jeg på den måde kan forstå det, håber jeg. Ellers mange tak for hjælpen.
Avatar billede arne_v Ekspert
22. november 2004 - 15:49 #12
Jeg har ihvertfald svært ved at forklare det bedre end 25/10-2004 15:36:06.

Det er ikke svært at finde et eksempel. Det er nok nærmest sværere at finde
et stykke java kode som ikke illusterer det. Man bruger det jo hele tiden.

String s1 = new String("ABC");
String s2 = s1;
String s3 = s2.substring(1,3);
Avatar billede touel Nybegynder
16. oktober 2005 - 00:09 #13
hehe... når jeg sidder og læser det nu, giver det bedre mening.. fatter ikke at jeg ikke kunne forstå det dengang... men mens jeg læser det nu, kommer der et lille spg op igen... Du har skrevet foroven:

rettelse:

GetPath() returnerer en reference til en InputStreamReader og den lader man
in referere til.

her vil jeg lige spørge: hva kan "in" bruge den reference til som GetPath() returnere til den ???

kan man senere hen skrive in.GetPath (), eller peger GetPath () og in på samme adr i memory. Hvis de peger på samme adr, hva betyder det så ? Jeg vil gerne gi flere point hvis du svare på spg.
Avatar billede arne_v Ekspert
16. oktober 2005 - 07:48 #14
klassen som client tilhører har en metode getPath som returnerer en InputStreamReader

på in kan du kalde alle de metoder som objekter af typen InputStreamReader nu har
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester