Unterklasse - oder so

  • Themenstarter Themenstarter Jue
  • Beginndatum Beginndatum
J

Jue

Gast
Zur Einleitung, ich versuche mir gerade Java beizubringen und habe hier mir ein Programm zusammenkopiert, was soweit auch funktioniert.

Ich möchte nun, nicht nur eine URL und einen Dateinamen verwenden, sondern viele.
Hierzu würde ich gerne die URLs und Dateinamen in einer Unterklasse (nennt man das so? - also eine andere Datei) definieren und dann in der Hauptmethode (?) aufrufen.

In VBA würde ich die Schleife in der Grundsubstanz so schreiben:

Code:
for i = 1 to 50
 URL = Url & i
 Dateiname = Datei & i
next i

Wobei natürlich irgendwo dann Url1,...Urln und Datei1,... Datein definiert sind.

Ich habe nun keine Ahnung, wie ich das in Java mache.
Wenns nicht zu kompliziert und/oder aufwändig ist, wäre ich für Vorschläge sehr dankbar.

LG
Jue

P.S. Die Zeilen mit URL und Dateiname sind 14 und 32.

Java:
import java.io.*; 
import java.net.*; 

public class UrlLader3 { 

  public static void main(String[] argv) { 

    try { 
      // 
      // URL erzeugen 
      // 
	  
	  for (int Seite = 1; Seite <= 834; Seite = Seite + 1){
      URL url = new URL("http://www.fanfiction.net/" + Seite + "/"); 

      // 
      // URLConnection erzeugen 
      // 
      URLConnection urlconn = url.openConnection(); 

      // 
      // Eingabestrom erzeugen 
      // 
      InputStream urlconninstr = urlconn.getInputStream(); 
      InputStreamReader isr = new InputStreamReader( urlconninstr ); 
      BufferedReader br = new BufferedReader( isr ); 

      // 
      // Ausgabestrom in Datei erzeugen 
      // 
      // Eine lokale Ausgabedatei in eine Instanz in File kapseln. 
      File ausgabeDatei = new File("Datei_" + Seite + ".html"); 
      // FileWriter erzeugen. 
      FileWriter fw = new FileWriter(ausgabeDatei); 
      // Den FileWriter in einem BufferedWriter verpacken. 
      BufferedWriter bw = new BufferedWriter(fw); 

      // 
      // Zeilenweise einlesen 
       // 
     String zeile = br.readLine(); 
      while (zeile != null) { 
	bw.write(zeile); 
	bw.newLine(); 
        zeile = br.readLine(); 
      } 
     
      // 
      // Eingabestrom und Ausgabestrom schliessen 
      // 
      // BufferedReader schliessen 
      br.close(); 
      // BufferedWriter schliessen 
      bw.close(); 
	  }
    } // try 
    catch (MalformedURLException mue) { 
      System.out.println(mue.getMessage()); 
    } // catch MalformedURLException 
    catch (IOException ioe) { 
      System.out.print("Allgemeine IO-Ausnahme mit "); 
      System.out.println(ioe.getMessage()); 
    } // catch IOException 

  } // Ende main 

} // Ende class UrlLader3
 
Hallo,

du wirst zur Laufzeit keine Abgeleiteten Klassen ("unterklassen") auslesen können. Das bedeutet, dass du nicht in einer oberklasse nach abgeleiteten suchen kannst. Also wenn A extends B, dann ist A für B bekannt aber nicht B für A.

B => A und nicht A => B.


Um dein Problem zu lösen, gibt es zahlreiche Möglichkeiten:

Du definierst in einer abstrakten klasse eine Methode "public abstract String getURL();".

Jede abgeleitete Klasse wird das implementieren müssen.

Dann wirst du einfach

new MeineURL123Klasse() machen.

Gruß,

Martin
 
Zuletzt bearbeitet von einem Moderator:
Ich kann nicht behaupten, dass ich das verstanden habe.

Aber trotzdem vielen Dank.

Ich habe jetzt eine Möglichkeit gefunden das Ganze in VBA zu lösen, womit es nicht mehr so dringend ist. Ich werde wohl doch mit etwas einfacherem zum Lernen anfangen... *g*

Nochmals vielen Dank für den Versuch und alles
 
Java:
public interface MyUrl{
    String getURL();
}

public class EbayURL implements MyURL{
    @Override
    public String getURL(){
         return new String("www.ebay.de");
    }
}

// in deiner main

URL url = new URL("http://"+new EbayURL().getURL()+Seite+"/");
 

Zurück
Oben