Von welcher Klasse wird die Methode aufgerufen?
-
In 99% der Fälle kann man davon ausgehen, dass eine Methode das tut was sie verspricht ...
Oder anders: Präzisiere bitte deine Frage. Was stellst du dir denn vor und warum sollte es nicht funktionieren?
-
Was weiß ich, ich hab davon keine Ahnung. Irgendwas von Optimierer und inline hat mir die Bierflasche zugeflüstert.
-
Jup, der JIT Compiler kann ganze FUnktionen einfach wegoptimieren. Beispiel:
void Test1() { Test 2(); } void Test2() { test 3(); } void Test3() { // stacktracen }
In Funktion 3 würde man einen Stacktrace erwarten der so aussieht:
Test1.
Test2.
Test3.In Wirklichkeit sieht man aber eher
Test3
Warum? Wenn der Compiler erkennt das eine Funktion nichts macht kann er die komplett weglassen.
Ein kompletter Artikel zum Thema findet sich hier:
-
Grohool schrieb:
Lässt sich irgendwie herausfinden aus welcher Klasse heraus ein Methode aufgerufen wurde?
Meistens sind solche Anforderungen IMO Fehler im Design.
Valable Gründe sind z.B. Debugging Funktionen.Simon
-
simon.gysi schrieb:
Valable Gründe sind z.B. Debugging Funktionen.
Das Wort "Valable" kenn ich nicht. Kann mir das jemand übersetzen?
-
Bedeutungen:
[1] rechtsgültig, valid
http://www.woxikon.de/fra/valable.php
Deutsch Deutsch
begründet (raison) berechtigt (raison) gültig (document, raison, tickets) rechtsgültig (droit) vernünftig (conseil) weise (conseil)
-
Wie kann man denn feststellen ob etwas ein Fehler im Design ist?
Ich kann den Typ auch explizit als Parameter übergeben. Oder es auch ganz anders Lösen. Allerdings führt das alles zu unnötig viel schreib arbeit in jeder abgeleiteten Klasse. Und wenn ich den Typ als Parameter übergebe, dann kann man da auch etwas anderes reinschreiben, was zu unauffindbaren Laufzeitfehlern führen könnte.
-
Du könntest zwei Methoden verwenden.
Eine für A und eine für B.
Simon
-
Könnte ich, aber der Sinn der Methode ist es, dass ich das ganze eben nur einmal schreiben muss. Wenn ich die Methode für jede abgeleitete Klasse neu schreibe, dann kann ich sie auch gleich ganz weg lassen.
-
Aber um zwei verschiedene Dinge zu tun brauchts zwei verschiedene Methoden.
Mich interessiert:
- Warum sind die beiden Methoden statisch?
- Warum gibts einen statischen Konstruktor?Ev. kannst Du dein Problem ein wenig umfassender beschreiben und ein kleines Code Bsp. liefern.
Simon