Java - Instanz zurück geben
- Java
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Gonger96.
-
-
Schau mal hier rein: stackoverflow.com/questions/56…ce-for-primitives-in-java
-
-
Nä. Nicht ganz. de.wikipedia.org/wiki/Referenzparameter#Sonderfall_Java
-
-
Aus dem Beispiel aus Post #2 werde ich irgendwie nicht schlau.. Ich habe eine "Property" die ich zurück geben möchte, und der Benutzer kann da etwas verändern. Da es aber return by value ist, bringt das absolut gar nichts. Also wie kann ich mein vorhaben anders realisieren?
-
-
Java-Quellcode
- public class Main {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- ZBufferData data = createBuffer();
- System.out.println(data.getDescription());
- System.out.println(data.getData());
- work(data);
- System.out.println(data.getDescription());
- System.out.println(data.getData());
- }
- private static ZBufferData createBuffer()
- {
- ZBufferData data = new ZBufferData();
- data.setDescription("BackBuffer helper.");
- data.setData(1024);
- return data;
- }
- private static void work(ZBufferData data)
- {
- data.setDescription("changed..");
- data.setData(2048);
- }
- }
- Produziert folgenden output:
- [code]
- BackBuffer helper.
- 1024
- changed..
- 2048
Es funktioniert also.. Wieso regen sich dann alle auf das Java pass und return by value ist?
[/code] -
Das geht glaube ich so nicht, du müsstet es mit einem Setter Setzen. Etwa So
Java-Quellcode
- public class Main {
- public static void main(String[] args)
- {
- Example e = new Example("Mustermann", "MusterValue");
- System.out.println(e.GetName());
- e.SetName("NeuerName");
- System.out.println(e.GetName());
- }
- }
- class Example
- {
- public String Name;
- public String Value;
- public Example(String Name, String Value)
- {
- this.Name = Name;
- this.Value = Value;
- }
- public String GetName()
- {
- return Name;
- }
- public String ResturnValue()
- {
- return Value;
- }
- public void SetName(String Name)
- {
- this.Name = Name;
- }
- public void SetValue(String Value)
- {
- this.Value = Value;
- }
- }
-
Du hast doch ein Klassenobjekt übergeben und zurückgegeben:
Artentus schrieb:
normale Klassen als Referenz
Deswegen werden die Daten ja auch verändert. -
ThuCommix schrieb:
Wieso regen sich dann alle auf das Java pass und return by value ist? -
-
Ich wollte auch mal ne total überflüssige Signatur:
---Leer--- -
-
-
Artentus schrieb:
Es gibt nichtmal Events, weils keine Delegaten gibt.
Nö, das ist ein Luxus von .Net das macht man mit Listenern. Ein Listener ist einfach ein Interface das an den Code Stellen aufgerufen werden soll. Etwa So
und die Klasse
Java-Quellcode
- public class Main {
- public static void main(String[] args)
- {
- Main m = new Main();
- Example e = new Example("Mustermann", "MusterValue");
- e.addListener(m.listener);
- System.out.println(e.GetName());
- e.SetName("NeuerName");
- System.out.println(e.GetName());
- }
- public TestListener listener = new TestListener()
- {
- public void returnName() {
- // TODO Auto-generated method stub
- System.out.println("Return Name Event");
- }
- public void returnValue() {
- // TODO Auto-generated method stub
- System.out.println("Return Value Event");
- }
- public void setName() {
- // TODO Auto-generated method stub
- System.out.println("Set Name Event");
- }
- public void setValue() {
- // TODO Auto-generated method stub
- System.out.println("Set Value Event");
- }
- };
- }
- class Example
- {
- private TestListener Listener;
- public String Name;
- public String Value;
- public Example(String Name, String Value)
- {
- this.Name = Name;
- this.Value = Value;
- }
- public String GetName()
- {
- if(this.Listener != null)
- {
- this.Listener.returnName();
- }
- return Name;
- }
- public String ResturnValue()
- {
- if(this.Listener != null)
- {
- this.Listener.returnValue();
- }
- return Value;
- }
- public void SetName(String Name)
- {
- if(this.Listener != null)
- {
- this.Listener.setName();
- }
- this.Name = Name;
- }
- public void SetValue(String Value)
- {
- if(this.Listener != null)
- {
- this.Listener.setValue();
- }
- this.Value = Value;
- }
- public void addListener(TestListener listener) {
- Listener = listener;
- }
- }
-
Andy16823 schrieb:
Nö, das ist ein Luxus von .Net
C++ hats doch auch, sogar C hat Delegates
Die Sache über Vererbung laufen zu lassen scheint extrem unflexibel.
-
Ähnliche Themen
-
Jonas Jelonek - - Weitere Sprachen und sprachübergreifende Themen