Jesper Matthiesen wrote:
>
> Enig. Static-metoder skal være uafhængige af objektets tilstand, men
> hvis der bruges en klassevariabel så er returværdien afhængig af hvad
> der ligger i variablen på det givne tidspunkt.
> Upassende static-metoder ses ofte hos begyndere der ikke har fået med
> at hvis man ikke laver en instans og kalder sin non-static metode på
> instansen så brokker compileren sig. Det næste der så sker er at man
> sætter alle metoder til at være static så det 'virker'.
Ja, det kan jeg godt følge...
I mit tilfælde VAR alle metoderne i forvejen sat til static. Men jeg var
nødt til at gøre variablen (urls) static for at kunne benytte den.
Det, jeg er interesseret i er, at min readHtmlList-metode skal lægge de
URL's, den læser i Stringbufferen urls og at jeg så til sidst skal kunne
læse de fundne URL's i min exists-metode. Er det jeg har forsøgt mig med
et skridt ad den rigtige eller forkerte vej? Det kompilerer fint men
giver en NullPointerException når exists finder et match.
Her kommer koden lige igen for en ordens skyld:
class Searcher {
static StringBuffer urls;
public static String exists(HTMLlist l, String word) {
while(l != null) {
if (l.str.equals(word))
return word + urls.toString();
l = l.next;
}
return "word NOT found";
}
public static HTMLlist readHtmlList(String filename) throws IOException
{
String name;
HTMLlist start,current,tmp;
BufferedReader infile = new BufferedReader(new
FileReader(filename)); // gør klar til at læse fra filen i filename
name=infile.readLine(); // Læs første linje fra filen
start=new HTMLlist(name,null);
current=start;
while(true) {
if (current.toString().length() > 5) {
if (current.toString().substring(0,6).equals("*PAGE:")) {
urls.append(current);
}
}
name = infile.readLine(); // Læs næste linje fra file
if(name==null) break; // Gå ud af løkken hvis der ikke er
flere
tmp=new HTMLlist(name,null);
current.next=tmp;
current=tmp;
}
infile.close(); // Angiv at vi ikke længere læser fra filen
return start;
};
}
Vh. Filip