URL: https://www.overclockers.at/coding-stuff/java-static-class-private-method_246433/page_1 - zur Vollversion wechseln!
ich habe hier ein opengl projekt in dem java für android verwendet wird und da gibt es in diesem beispiel folgendes:
1. Die Zeile die alles aufruft:
Ray ray = convertNormalized2DPointToRay(normalizedX,normalizedY);
2. ray class mit constructor
Code: JAVApublic static class Ray { public final Point point; public final Vector vector; public Ray(Point point, Vector vector) { this.point = point; this.vector = vector; } }
Wie nennt man so ein Konstrukt wie in 3 und warum kann man das so schreiben? Und wieso kann man, wie in 1. das Objekt erstellen und nach dem "=" direkt die Methode aufrufen anstatt von "new Ray"?Code: JAVAprivate Ray convertNormalized2DPointToRay(float normalizedX, float normalizedY) { . . . return new Ray(nearPointRay, Geometry.vectorBetween(nearPointRay, farPointRay)); }
Ich hoffe mal ich hab deine Fragen richtig verstanden..
Sorry, aber was für ein Konstrukt meinst du genau? Ich seh hier absolut nichts aussergewöhnliches.ZitatWie nennt man so ein Konstrukt wie in 3 und warum kann man das so schreiben?
ZitatUnd wieso kann man, wie in 1. das Objekt erstellen und nach dem "=" direkt die Methode aufrufen anstatt von "new Ray"?
gibt ja einen Ray zurück und dieser wird aufCode: JAVARay convertNormalized2DPointToRay(...)
zugewiesen.Code: JAVARay ray
Wegen 3: Die Methode gibt dir ja new Ray(nearPointRay, Geometry.vectorBetween(nearPointRay, farPointRay)) zurück, was dann der Variable ray zugewiesen wird. Heißt die Objekterstellung wurde nur in eine Methode ausgelagert 
ok, das kann man so auch machen scheinbar. bisschen ungewöhnlich für mich. mit konstrukt(aufbau) meinte ich nur die art des objektaufrufes mit all dem darunter.
funktioniert so etwas nur in java?
Das Konzept - bzw. wie du sagst Aufbau - dahinter nennt man Reference Counted Smart Pointer. Es wird mit "new" das Objekt einmal im Speicher erstellt, kopiert wird dann allerdings nicht mehr das ganze Objekt, sondern eben nur ein Helfer (Wrapper) drumherum, der die Anzahl der Referenzen auf das Objekt zählt, und weiß wie es wieder aus dem Speicher entfernt wird.
Zumindest in C++/C# gibt es das auch; wahrscheinlich in den meisten OO Languages.
Das kannst du in jeder OOP machen und ist auch gängig.
In C# erstell ich z.B.: regelmäßig ViewModels (enthalten Daten welche am Frontend angezeigt werden) was dann in etwa so aussieht.
Code: CSHARPpublic JsonResult Index(long offerId) { Offer offer = Session.Load<Offer>(offerId); //Laden des Angebotes aus der Datenbank OfferViewModel offerViewModel = CreateOfferViewModel(offer) return offerViewModel.ToJson(); } private OfferViewModel CreateOfferViewModel(Offer offer) { OfferViewModel viewModel = new OfferViewModel(); viewModel.NetSum = offer.NetSum; //Weiteres befüllen der Daten return viewModel; }
Zitat von PuhBärDas Konzept - bzw. wie du sagst Aufbau - dahinter nennt man Reference Counted Smart Pointer. Es wird mit "new" das Objekt einmal im Speicher erstellt, kopiert wird dann allerdings nicht mehr das ganze Objekt, sondern eben nur ein Helfer (Wrapper) drumherum, der die Anzahl der Referenzen auf das Objekt zählt, und weiß wie es wieder aus dem Speicher entfernt wird.
Zumindest in C++/C# gibt es das auch; wahrscheinlich in den meisten OO Languages.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025