Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Java
You last visited: Today at 17:46

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Java] Problem mit der Variablenübergabe

Discussion on [Java] Problem mit der Variablenübergabe within the Java forum part of the Coders Den category.

Reply
 
Old   #1
 
chrisyou's Avatar
 
elite*gold: 103
Join Date: Jun 2009
Posts: 1,972
Received Thanks: 410
[Java] Problem mit der Variablenübergabe

Hey Freunde!

Ich habe ein Problem mit der Übergabe von Variablen/Objekten im Zuge eines Java-Projektes.

In einer Klasse nutze ich einen BufferedWriter und BufferedReader, der wiederum einen Output/Inputstream eines Sockets als jeweilige Quelle hat.

Ich möchte nun von einer anderen Klasse auch etwas mithilfe des BufferedWriters schreiben. Wie stelle ich dies am geschicktesten an?

Der BufferedWriter wird in einer Methode der ersten Klasse deklariert.

Ich hoffe mein Problem wurde deutlich. Ich selbst würde mich nicht mehr als wirklicher Einsteiger bezeichnen, bin allerdings was mehrere Klassen und deren Übergriffe angeht sehr unerfahren.

EDIT: Move-Anfrage ist raus.
chrisyou is offline  
Old 03/03/2015, 16:20   #2
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
Returne in deiner Methode dein erzeugtes BufferedWriter Objekt, oder mache eine getter-Methode die dir das BufferedWriter Objekt zurückgibt.
Jedoch musst du hier aufpassen, wenn mehrere Klassen auf das selbe zugreifen(in diesem Fall das schreiben) das kein Deadlock bzw. inkosistenz entsteht/herrscht.
XxharCs is offline  
Old 03/03/2015, 20:01   #3
 
Zunft's Avatar
 
elite*gold: 0
Join Date: Mar 2013
Posts: 3,185
Received Thanks: 1,317
Klasse_A:
Code:
BufferedWriter writer = new BufferedWriter(
new FileWriter(
new File("filename.txt").getAbsoluteFile()));

public BufferedWriter getWriter()
{
return writer;
}
Klasse_B:
Code:
Klasse_A writerClass = new Klasse_A();
BufferedWriter writer = writerClass.getWriter();
writer.write("Hallo Welt!");
writer.close();
Zunft is offline  
Old 03/03/2015, 21:06   #4
 
chrisyou's Avatar
 
elite*gold: 103
Join Date: Jun 2009
Posts: 1,972
Received Thanks: 410
Quote:
Originally Posted by Zunft View Post
Klasse_A:
Code:
BufferedWriter writer = new BufferedWriter(
new FileWriter(
new File("filename.txt").getAbsoluteFile()));

public BufferedWriter getWriter()
{
return writer;
}
Klasse_B:
Code:
Klasse_A writerClass = new Klasse_A();
BufferedWriter writer = writerClass.getWriter();
writer.write("Hallo Welt!");
writer.close();
Meine zweite Klasse ist halt ein geloopeder Thread.

Wie verhindere ich da, dass KlasseA ständig nochmal ausgeführt wird?
chrisyou is offline  
Old 03/03/2015, 21:36   #5
 
Zunft's Avatar
 
elite*gold: 0
Join Date: Mar 2013
Posts: 3,185
Received Thanks: 1,317
Quote:
Originally Posted by chrisyou View Post
Meine zweite Klasse ist halt ein geloopeder Thread.

Wie verhindere ich da, dass KlasseA ständig nochmal ausgeführt wird?
Du kannst zum einen den BufferedWriter sowie die Funktion getWriter als public static deklarieren, wobei hier vielleicht eine NullPointerException auftreten könnte - wenn eine Variable/Funktion, die als public static deklariert wurde aufzurufen, musst du keine neue Instanz der Klasse bilden:

Klasse_A:
Code:
public static BufferedWriter writer = new BufferedWriter(
new FileWriter(
new File("filename.txt").getAbsoluteFile()));
Klasse_B:
Code:
Klasse_A.writer.write("Hallo Welt!");
Klasse_A.writer.close();
Eine andere Möglichkeit wäre, dass du die Klasse_A in Klasse_B global deklarierst und initialisierst bzw. bei der Instanzbildung von Klasse_B initialisierst:

Klasse_A:
Code:
BufferedWriter writer = new BufferedWriter(
new FileWriter(
new File("filename.txt").getAbsoluteFile()));

public BufferedWriter getWriter()
{
return writer;
}
Klasse_B:
Code:
public class Klasse_B
{
Klasse_A writerClass;
//Alternativ:
//Klasse_A writerClass = new Klasse_A();
BufferedWriter writer;
public Klasse_B()
{
Klasse_A writerClass = new Klasse_A();
//Bei Alternative kann obrige Zeile entfernt werden
writer = writerClass.getWriter();
}

//Dein Thread
// (...)

writer.write("Hallo Welt!");
writer.close();

// (...)

}
Zunft is offline  
Thanks
1 User
Old 03/03/2015, 21:51   #6
 
chrisyou's Avatar
 
elite*gold: 103
Join Date: Jun 2009
Posts: 1,972
Received Thanks: 410
Quote:
Originally Posted by Zunft View Post
Du kannst zum einen den BufferedWriter sowie die Funktion getWriter als public static deklarieren, wobei hier vielleicht eine NullPointerException auftreten könnte - um eine Variable/Funktion, die als public static deklariert wurde aufzurufen, musst du keine neue Instanz der Klasse bilden:

Klasse_A:
Code:
public static BufferedWriter writer = new BufferedWriter(
new FileWriter(
new File("filename.txt").getAbsoluteFile()));
Klasse_B:
Code:
Klasse_A.writer.write("Hallo Welt!");
Klasse_A.writer.close();
Eine andere Möglichkeit wäre, dass du den BufferedWriter in Klasse_B global deklarierst und initialisierst bzw. bei der Instanzbildung von Klasse_B initialisierst:

Klasse_A:
Code:
BufferedWriter writer = new BufferedWriter(
new FileWriter(
new File("filename.txt").getAbsoluteFile()));

public BufferedWriter getWriter()
{
return writer;
}
Klasse_B:
Code:
public class Klasse_B
{
Klasse_A writerClass;
//Alternativ:
//Klasse_A writerClass = new Klasse_A();
BufferedWriter writer;
public Klasse_B()
{
Klasse_A writerClass = new Klasse_A();
//Bei Alternative kann obrige Zeile entfernt werden
writer = writerClass.getWriter();
}

//Dein Thread
// (...)

writer.write("Hallo Welt!");
writer.close();

// (...)

}
Danke, die erste Methode fand ich gut.
Aber 'ne getWriter()-Methode brauche ich da ja nicht mehr.
chrisyou is offline  
Reply


Similar Threads Similar Threads
recompile Problem (Block.java, item.java)
04/13/2013 - Minecraft - 1 Replies
Guten Morgen liebe Com (: Ich versuche etwas neues in Minecraft.. für mich einzubauen.. neuer Block + das Item dazu, des eingepflanzt werden muss.. wie bei einer Karotte oder einer Kartoffel. Ich zeige euch den Inhalt meiner BlockOnion.java package net.minecraft.src;
Java Problem
08/31/2012 - Technical Support - 2 Replies
Hey Zusammen Seit einer Weile hab ich das Problem, das kein Browser Java erkennt, anderst kann ich mir die folgenden Meldungen nicht erklären: http://s7.directupload.net/images/120831/temp/xd3 tctmm.png http://s1.directupload.net/images/120831/temp/xtk m6lsa.jpg Ich habe Windows 7 mit einem 64Bit System, als Browser benutze ich FireFox. Da Minecraft funktionert, muss Java also richtig installiert sein...-.-'
Java problem`??
03/22/2011 - Minecraft - 2 Replies
hey leute was für ein java brauche ich bitte postet den download link sofort hierein :D also ich kann kein minecraft starten ich kann mein server nicht starten :(
Java Problem
02/27/2011 - Minecraft - 5 Replies
Minecraft stürtzt nach ein paar Minuten immer wieder ab hier der ErrorLog # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x4ee1f1f5, pid=4048, tid=4196 # # JRE version: 6.0_24-b07 # Java VM: Java HotSpot(TM) Client VM (19.1-b02 mixed mode windows-x86 ) # Problematic frame:
Java Problem
01/23/2011 - Technical Support - 8 Replies
Hey Leute Ich habe heute meinen Laptop( W7 64 bit) auf werkzustand zurückgesetzt. Dann kamen die Standart Programme: ICQ,Firefox,Skype und Java. Bei Java gab es ein Problem. Ich habe mir 3 verschiedene Versionen von der Homepage heruntergeladen (darunter auch die 64 bit version) Und jedesmal kam die Fehlermeldung,dass das Instalations paket nicht existiert bzw. darauf nicht zugreifen kann obwohl ich admin bin. Please Help



All times are GMT +1. The time now is 17:49.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.