/ 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
Scoping??
Fra : KDA


Dato : 04-01-01 11:58

Hej

Håber en vil tage sig tid til at forklare mig et "lille" problem jeg har med
scoping af variable (objekter) der bliver initaliseret i en 'try' blok.

Herunder er et nedbarberet eksempel på mit problem:

========== 8< InetTest.java 8<===============
import java.net.*;

class InetTest {

// InetAddress ia; // Her virker scooping OK, og objektet 'ia' kan tilgås
udenfor 'try' blokken

public InetTest () {
String host = "www.dr.dk";
InetAddress ia; // Her virker scoopet kun indenfor 'try' blokken
Tilgang udenfor bevirker en
// Compile error:
//
// InetTest.java:15: variable ia might not
have been initialized
// System.out.println(ia);
// ^
// 1 error
try {

ia = InetAddress.getByName(host);
System.out.println("Inside try block " + ia); // OK. Ingen
problemer med at tilgå 'ia'

} catch (UnknownHostException e) {

System.err.println("Error: Host unknown" + e);

}

System.out.println("Outside try block " + ia); // Compile error som
beskrevet ovenfor...
//
Hvis 'ia' er defineret indefor metoden
}

public static void main (String args[]) {
InetTest itt = new InetTest();
}
}
============8<======================

Problemet er scooping af objeltet 'ai'. Det har åbenbart betydning om det er
et objekt der er scoopet indenfor klassen eller indenfor metoden?

Indenfor klassen er der ingen problemer.
Men vælger jeg at objektet "bare" skal være lokalt for metoden må jeg ikke
engang tilgå det i metoden når det sker udenfor 'try' blokken ??

Hvad er forklaringen ??? Anyone?
Evt. ville en reference til noget dokumentation omkring emnet også være
velkommen....

Venlig hilsen
(En der gerne vil være lidt klogere på java)
KDA

(Hvis det her "mod min forventning" skulle står på side 2 i java manualen
beklager jeg meget.)




 
 
Ulrik Magnusson (04-01-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 04-01-01 13:33

> Problemet er scooping af objeltet 'ai'. Det har åbenbart betydning om det er
> et objekt der er scoopet indenfor klassen eller indenfor metoden?

Ikke med hensyn til "not initialized" fejlen, som jeg får i begge tilfælde (JDK
1.2.2).

> Indenfor klassen er der ingen problemer.
> Men vælger jeg at objektet "bare" skal være lokalt for metoden må jeg ikke
> engang tilgå det i metoden når det sker udenfor 'try' blokken ??

Jo, hvis du initialiserer det først. Prøv at sætte det til null.

Ulrik Magnusson


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste