Klassen Ein Problem mit den Instanzvariablen

Jesfreric

Aktives Mitglied
Liebes Forum

Ich hätte einmal eine grundsätzliche Frage zum Thema Instanzvariablen.

Ich habe eine eigene Klasse erstellt (Name: FREAD( String strA ) mit einer eigenen Methode readFile().
In meiner Hauptklasse (also dort wo meine main() Methode ist) erstelle ich zwei neue Objekte über new FREAD und übergebe zwei verschiedene Strings an die Objekte:

Java:
// Code 1

FREAD no1 = new FREAD(String a);
FREAD no2 = new FREAD(String b);

im Anschluss rufe ich an beiden Objekten meine Methode auf:

Java:
//Code 2

String E1 = no1.readFile();
String E2 = no2.readFile();

Obwohl unterschiedliche Ergebnisse zu erwarten sind, liefern E1 und E2 die gleichen Ergebnisse.
Der Grund dafür liegt mit Sicherheit darin, dass die Instanzvariablen die von no1 in Code 1 beschrieben wurden sofort durch no2 überschrieben wurden.
Ist das normal? Muss ich das dann wirklich immer so schreiben?

Java:
FREAD no1 = new FREAD(String a);
String E1 = no1.readFile();

FREAD no2 = new FREAD(String b);
String E2 = no2.readFile();

Oder reicht es etwas an der Bezeichnung meiner Variablen zu ändern.
Momentan sind die Instanzvariablen mit "private static..." bezeichnet. Das static (so sagt der Compiler) wäre notwendig.


Viele Grüße
Richard
 
Zuletzt bearbeitet:

X5-599

Top Contributor
Normal ist das nicht. Interessant wäre zu wissen wie deine FREAD Klasse aussieht. Ich nehme mal an das der übergebene String ein Dateiname/Pfad ist und du momentan zweimal dieselbe Datei ausliest, obwohl du zwei unterschiedliche Objekte (mit zwei unterschiedlichen Strings) von FREAD erstellst.

Ich vermute weiter, dass der übergebene String in der Klasse FREAD als statische Variable deklariert ist. Wenn das der Fall ist müsstest du nur das "static" daraus entfernen.
 

VfL_Freak

Top Contributor
Moin,

so ganz habe ich deine Frage nicht verstanden!

Aber Folgendes ist IMHO falsch:
Ich habe eine eigene Klasse erstellt (Name: FREAD( String strA ) mit einer eigenen Methode readFile().
In meiner Hauptklasse (also dort wo meine main() Methode ist) erstelle ich zwei neue Objekte über new FREAD und übergebe zwei verschiedene Strings an die Objekte:
Java:
FREAD no1 = new FREAD(String a);
FREAD no2 = new FREAD(String b);
Du übergibst hier ja beim Aufruf keinen String, sondern deklarierst einen neuen, somit leeren String!

Korrekt sollte es so lauten:
Java:
String a = new String( "irgendwas");
String b = new String( "was anderes");
FREAD no1 = new FREAD( a );
FREAD no2 = new FREAD( b );

Gruß
Klaus
 

Jesfreric

Aktives Mitglied
Hi

Danke für deine Antwort.
Meine Klasse schaut so aus:

Java:
class FREAD{
   private static String fileSource;
   private static String Content = new String("");


   FREAD(String a){
      fileSource = a;
   }


   public static String readFile() throws IOException{
      FileReader fr = new FileReader(fileSource);
      BufferedReader br = new BufferedReader(fr);
      String line = "";

      while(  (line = br.readLine()   ) != null){
         Content = Content + "\n" + line;
      }
      br.close();
      return content;
   }
}
Wenn ich die static aus den Intanzvariablen raus nehme, dann beschwert sich der Compiler.
Ich sollte String a wahrscheinlich lieber an die Methode übergeben (dann sind sie ja automatisch nur temporär...)

Die "Quellstrings" meiner beiden FREAD Objekte sind auch auf jeden Fall verschieden (hab nochmal nach geschaut).=)

Viele Grüße
Richi
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

sieht auf den ersten Blick korrekt aus, wobei ich "fileSource" auch initialisieren würde!
Java:
class FREAD{
   private static String fileSource;
   private static String Content = new String("");


   FREAD(String a){
      fileSource = a;
   }


   public static String readFile() throws IOException{
      FileReader fr = new FileReader(fileSource);
      BufferedReader br = new BufferedReader(fr);
      String line = "";

      while(  (line = br.readLine()   ) != null){
         Content = Content + "\n" + line;
      }
      br.close();
      return content;
   }
}
Wenn ich die static aus den Intanzvariablen raus nehme, dann beschwert sich der Compiler.
Ich sollte String a wahrscheinlich lieber an die Methode übergeben (dann sind sie ja automatisch nur temporär...)

Die "Quellstrings" meiner beiden FREAD Objekte sind auch auf jeden Fall verschieden (hab nochmal nach geschaut).=)
Das "static" natürlich drin bleiben, dass es ja eben statische Klassenmember sind!
Wo rufst Du denn "readFile" auf?
Du könnstest natürlich den Pfad auch dort direkt übergeben und auf die Klassenvariablen verzichten !

Die "Quellstrings" meiner beiden FREAD Objekte sind auch auf jeden Fall verschieden (hab nochmal nach geschaut).=)
Schon möglich, nur war dein Aufruf falsch (s. o.) !

Gruß
Klaus
 

Jesfreric

Aktives Mitglied
Erst einmal danke für eure Antworten=)
Wäre es eigentlich möglich den Konstruktor leer zu lassen und einfach nur die Methode zu schreiben?
Weil wenn ich die Quelle für die Datei direkt an die Methode übergebe, wird der Konstruktor selbst irgendwie "überflüssig" für mein "readFile()".
 

VfL_Freak

Top Contributor

Jesfreric

Aktives Mitglied
Das stimmt...
es würde also so etwas hier gehen?

Java:
class FREAD{   

   FREAD(){      
   }     

   public static String readFile(String a) throws IOException{      
     //INHALT 
   }
}
 
Zuletzt bearbeitet:

Jesfreric

Aktives Mitglied
:DJep...leider irreparabel defekt.
Mein Computer akzeptiert das "Ausprobieren" durch meine ständigen Versuche nicht mehr...

P.S.: Dachte bis vorhin, dass im Konstruktor IMMER etwas stehen muss. Wollte nicht, dass mich dann später das böse Ende ereilt...

Es funktioniert übrigens jetzt tadellos=)
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
:DJep...leider irreparabel defekt.
Mein Computer akzeptiert das "Ausprobieren" durch meine ständigen Versuche nicht mehr...
verständlich :lol:

Dachte bis vorhin, dass im Konstruktor IMMER etwas stehen muss
Nein, der Aufruf eines leeren Konstruktor erzeugt einfach nur das entsprechende Objekt!
Wenn aber bspw. die Klasse von was anderem abgeleitet wäre, dann müsste zumindest der entsprechende Konstruktor der vererbenden Klasse "super( ... ) " aufgerufen werden!
Galileo Computing :: Java ist auch eine Insel – 2.2 Anweisungen formen Programme

Es funktioniert übrigens jetzt tadellos=)
Prima :toll:

Gruß
Klaus
 

X5-599

Top Contributor
Das stimmt...
es würde also so etwas hier gehen?

Java:
class FREAD{   

   FREAD(){      
   }     

   public static String readFile(String a) throws IOException{      
     //INHALT 
   }
}

Es sollte noch erwähnt sein, dass wenn du das so machst, du keine Instanzen von deiner Klasse erzeugen musst. Ein einfaches: FREAD.readFile("Pfad/zum/File.txt"); reicht dann aus. Der Konstruktor ist dann auch überflüssig.
 

Natac

Bekanntes Mitglied
Java:
class FREAD{
   private static String fileSource;
   private static String Content = new String("");

   FREAD(String a){
      fileSource = a;
   }

   public static String readFile() throws IOException{
    ...
   }
}
Der Compiler meckert weil deine methode auch statisch ist. Wenn du alle drei statics wegnimmst, sollte es so funktionieren, wie du es gedacht hast.

Bleibt natürlich die Frage, was "besser" ist:
Java:
String s1 = new FREAD("file.txt").readFile();// deine Version
String s2 = FREAD.readFile("file.txt"); // statische Version ohne Instanz
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Best Practice Problem mit (einfacher) Doppelt-Schleife Java Basics - Anfänger-Themen 53
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
F Problem mit Listen Java Basics - Anfänger-Themen 5
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
J Problem bei Umrechnung von Hex in Bin Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben