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.)