Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
MethodenMethode auf Array aufrufen, und dieses Array dabei ändern?
Die Methode möchte ich auf ein Array anwenden, und dabei z. B. den Eintrag mit dem Index 0 auf 12 setzen.
In JavaScript würde ich
Code:
this[0] = 42;
schreiben, in Java bezieht sich das this aber offensichtlich auf meine Klasse.
Wie kriege ich das nun hin, dass in der Methode, das Array verändert wird, bei dem die Methode aufgerufen wird?
LG Willibergi
PS: Ich weiß, dass ich auch eine void-Methode mit Übergabe einer Referenz zum Array hätte erstellen können. Ich möchte aber etwas wie array.foo() erstellen.
Ich weiß nicht ob ich dich ganz verstanden hab. Also für mich klang das so als würdest du gerne an den stellen 0 und 12 in einem Array einen Wert setzen. Und dafür willst du eine Methode haben.
Die Sinnhaftigkeit ist natürlich fragwürdig, aber das würde wie folgt gehen:
Java:
public void foo(int[] arr, int value, int indices...) {
for(int index : indices) {
arr[index] = value;
}
}
Aufruf:
Java:
foo(new int[20], 42, 0, 12);
Zur erklärung, du hast eine variable liste von indices (...) und die durchläufst du. In dieser befinden sich aktuell zwei Werte (0,12) an den Stellen wird dann im Array der übergebene Wert 42 gesetzt. Statt new int[20] kannst du natürlich auch einfach ein anderes Array übergeben, das du vorher deklariert hast.
Vielleicht erklärst du was du eigentlich genau machen willst, ohne Code zu benutzen
Der von mir gepostete Quellcode ist natürlich nicht das, was ich machen möchte - er sollte nur zur Darstellung dienen.
Ich wollte nur, wie Joose schon erkannt hat, einem Array eine Methode hinzufügen, auf die ich dann mit
Java:
arr.foo();
zugreifen kann.
Aber wenn ich das richtig verstanden habe, ist das ohnehin nicht möglich, und ich muss auf eine Void-Methode zurückgreifen und ihr die Referenz übergeben.
Ah, das sieht noch nett aus. Aber ich denke, sollte man in Java irgendwann mal den Schritt endlich wagen, primitive Datentypen abzuschaffen und rein Objektorientiert zu werden, kann man auch ohne Lombock einfach die jeweilige Klasse erweitern.
Auch wenn ich den Code recht nett finde!
#edit: Der Code-Schnipsel erweitert aber auch "nur" Arrays und nicht den quasi primitiven Datentyp einer array-Referenz (ich weiss gerade nicht, wie ich sprachlich die Klasse Arrays von dem array mit [] distanzieren soll )
Und noch etwas: Solche Erweiterungen kann man IMHO auch mit noch einem anderen Mittel erreichen: Runtime Bytecode Generation / Manipulation á la Byte Buddy
#edit: Der Code-Schnipsel erweitert aber auch "nur" Arrays und nicht den quasi primitiven Datentyp einer array-Referenz (ich weiss gerade nicht, wie ich sprachlich die Klasse Arrays von dem array mit [] distanzieren soll )
@mrBrown - ah ok. Sorry, hab ich überlesen. Musste mich gerade erst mal etwas in die Konzepte einlesen, bin dabei über diesen Gist hier gestossen - https://gist.github.com/dylon/6568211 - und hab es dann erkannt, dass es doch geht. Wollte mich gerade selbst korrigieren, aber du warst schneller