Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe z.B. 4 Klassen u.a. eine 5. mit main-funktion.
ich erzeuge in klasse 1 ein objekt (mit eigenschaften der klasse 2). besteht dieses objekt nur in der klasse 1, in der es erzeugt worde ist oder kann ich das objekt auch in klasse 3 oder klasse 4 ... aufrufen bzw. darauf (z.b. auf die methoden) zu greifen? :bahnhof:
@illuvator hmm hab ich das jetzt richtig verstanden.
du erzeugst in Klasse eins ein Objekt zb Object a=new Object();
und in Klasse 3 "übergibst du es"?? zb in klasse drei: methode(Object a) dann übergibst du ja nicht das Objekt der Klasse eins sondern irgendein Objekt der klasse eins.????????
public class Class1 {
Object itsObject;
public Class1(Object itsObject) {
this.itsObject = itsObject;
}
}
public class Class2 {
Object itsObject;
public Class2(Object itsObject) {
this.itsObject = itsObject;
}
}
public class Test {
public static void main(String[] args) {
Object o = new Object();
Class1 c1 = new Class1(o);
Class2 c2 = new Class2(o);
}
}
Beide Klassen haben eine Referenz aufs selbe Objekt.
hhmmmm .... irgendwie komme ich mit meinem Programm nicht weiter, trotz der guten tipps.
kann sich einer von euch mein programm angucken und mir etwas helfen?
ich möchte nämlich eine klasse DATEI erzeugen, welche ich immerwieder aufrufen möchte bzw. das erzeugte objekt (von verschiedenen klassen aus) um eben in einer anderen klasse bzw. einer methode eine datei zu öffnen und in einer anderen klasse /methode in diese datei zu schreiben ... und irgendwoanders diese datei dann schließen.
daher wollte ich mit verweisen arbeiten. toll. pointer wären angesagt :-( hilft mir jemand. :bahnhof: mein programm hat um die 100 zeilen und ich arbeite mit einer xml-datei, die eingelesen wird, geparst und bestimmter Text ausgegeben. und diese ausgabe wird mit dem Stringtokenizer verarbeitet und während dessen sollten die einzelnen Worte gespeichert werden....
Du kannst dir eine Objektvariable so ähnlich wie einen Pointer vorstellen. Das Objekt selbst wird auf dem Heap erstellt, die Variable ist ein Zeiger auf diesen Speicherplatz. Du hast nur keine weitere Kontrolle über diesen "Zeiger".
ok, hier der code. ist nicht auskommentiert - sorry.
Code:
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.io.*;
import java.util.*;
public class ReadLibrary extends DefaultHandler {
public static void main(String args[]) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String xmlfile;
System.out.print("filename eingeben ..... ");
xmlfile = new String(in.readLine());
ReadLibrary read = new ReadLibrary(xmlfile);
}
ReadLibrary(String libFile) {
File input = new File(libFile);
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
try {
SAXParser sax = factory.newSAXParser();
sax.parse(input, new LibraryHandler() );
} catch (ParserConfigurationException pce) {
System.out.println("Could not create that parser.");
System.out.println(pce.getMessage());
} catch (SAXException se) {
System.out.println("Problem with the SAX parser.");
System.out.println(se.getMessage());
} catch (IOException ioe) {
System.out.println("Error reading file.");
System.out.println(ioe.getMessage());
}
}
}
class LibraryHandler extends DefaultHandler {
static int READING_ABSATZ = 1;
static int READING_SATZ = 2;
static int READING_UEBERSCHRIFT = 3;
static int READING_NOTHING = 0;
int currentActivity = READING_NOTHING;
Buch libraryBook = new Buch();
LibraryHandler() {
super();
}
void tokenizeInSaetze(String worte){
String temp;
System.out.println("\ngelesener text...... " + worte + "\n");
String text = worte;
StringTokenizer st = new StringTokenizer(text, " .!,\r\n\t;");
while (st.hasMoreTokens())
{
temp= st.nextToken();
System.out.println("\nnach dem TOKENIZEN ... "+ temp );
}
}
public void startElement(String uri, String localName,
String qName, Attributes attributes) {
System.out.println("Wir befinden uns im startElement.\n");
if (qName.equals("absatz"))
currentActivity = READING_ABSATZ;
else if (qName.equals("satz"))
currentActivity = READING_SATZ;
else if (qName.equals("ueberschrift"))
currentActivity = READING_UEBERSCHRIFT;
}
public void characters(char[] ch, int start, int length) {
String zeichen, temp;
System.out.println("Wir befinden uns in characters.\n");
String value = new String(ch, start, length);
if (currentActivity == READING_UEBERSCHRIFT)
libraryBook.ueberschrift = value;
if (currentActivity == READING_ABSATZ)
libraryBook.absatz = value;
if (currentActivity == READING_SATZ)
{
libraryBook.satz = value;
// TOKENIZE:
tokenizeInSaetze(libraryBook.satz = value);
}
}
public void endElement(String uri, String localName, String qName) {
if (qName.equals("sub")) {
System.out.println("\nUeberschrift: " + libraryBook.ueberschrift);
System.out.println("\nSatz: " + libraryBook.satz);
System.out.println("Absatz: " + libraryBook.absatz);
libraryBook = new Buch();
}
}
}
class Buch {
String satz;
String ueberschrift;
String absatz;
}
Hier ein Ausschnitt aus der XML-Datei:
<?xml version="1.0" encoding="ISO-8859-1" standalone="no" ?>
<!DOCTYPE buch (View Source for full doctype...)>
- <buch>
<autor>Theodor Fontane</autor>
<titel>Effi Briest</titel>
<jahr />
- <sub>
<ueberschrift>Erstes Kapitel</ueberschrift>
- <absatz>
<satz>In Front des schon seit Kurfürst Georg Wilhelm von der Familie von Briest bewohnten Herrenhauses zu Hohen-Cremmen fiel heller Sonnenschein auf die mittagsstille Dorfstraße, während nach der Park- und Gartenseite hin ein rechtwinklig angebauter Seitenflügel einen breiten Schatten erst auf einen weiß und grün quadrierten Fliesengang und dann über diesen hinaus auf ein großes, in seiner Mitte mit einer Sonnenuhr und an seinem Rande mit Canna indica und Rhabarberstauden besetzten Rondell warf.</satz>
<satz>Einige zwanzig Schritte weiter, in Richtung und Lage genau dem Seitenflügel entsprechend, lief eine ganz in kleinblättrigem Efeu stehende, nur an einer Stelle von einer kleinen weißgestrichenen Eisentür unterbrochene Kirchhofsmauer, hinter der der Hohen-Cremmener Schindelturm mit seinem blitzenden, weil neuerdings erst wieder vergoldeten Wetterhahn aufragte.</satz>
<satz>Fronthaus, Seitenflügel und Kirchhofsmauer bildeten ein einen kleinen Ziergarten umschließendes Hufeisen, an dessen offener Seite man eines Teiches mit Wassersteg und angekettetem Boot und dicht daneben einer Schaukel gewahr wurde, deren horizontal gelegtes Brett zu Häupten und Füßen an je zwei Stricken hing - die Pfosten der Balkenlage schon etwas schief stehend. Zwischen Teich und Rondell aber und die Schaukel halb versteckend standen ein paar mächtige alte Platanen.</satz>
</absatz>
..... usw. ....
die xml-datei wird eingelesen und relevant ist der text zwischen den tags <satz> und wie geschrieben, ich möchte die ausgabe (bei tokenize) wort für wort in extra datei speichern. also so wie die ausgabe per println auf dem bildschim zu sehen ist, so soll dies in die datei rein..... aber WIE?