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.
Jein. Die Frage macht so IMHO nicht so viel Sinn. (Die Antwort bisher auch nicht, jaja... :wink: ).
Das, was dort übergeben wird (bzw. "das, was in der Methode ankommt") ist eine neue, eigenständige int-Variable - die hat mit der Konstanten nichts zu tun (und könnte und SOLLTE (um Verwirrung zu vermeiden) auch einen anderen Namen haben!)
Code:
final int ZAHL = 5;
public void setZahl(final int ZAHL)
{
this.ZAHL = 2; // Geht nicht: this.ZAHL ist final
ZAHL = 1; // Geht NICHT: Die lokale Variable ZAHL ist final
}
Code:
final int ZAHL = 5;
public void setZahl(int ZAHL)
{
this.ZAHL = 2; // Geht nicht: this.ZAHL ist final
ZAHL = 1; // Geht: Die lokale Variable ZAHL ist NICHT final
}
Besser:
Code:
final int ZAHL = 5;
public void setZahl(final int dieZahl)
{
this.ZAHL = 2; // Geht nicht: this.ZAHL ist final
dieZahl = 1; // Geht NICHT: Die lokale Variable "dieZahl" ist final
}
Code:
final int ZAHL = 5;
public void setZahl(int dieZahl)
{
this.ZAHL = 2; // Geht nicht: this.ZAHL ist final
dieZahl = 1; // Geht: Die lokale Variable "dieZahl" ist NICHT final
}
Ach ja: Wenn es wirklich nur um das Übergeben selbst geht: Die Methode kann immer aufgerufen werden mit
setZahl(ZAHL);
... das, was dann in der Methode ankommt, ist "5", aber wenn es erstmal in der Methode angekommen ist, hat es mit der Konstanten nichts mehr zu tun.
wenn man das ganze dann per Integer macht statt int, sollte der parameter nicht kopiert werden, sondern die referenz auf die final Integer sollte bleiben und dann kann der parameter auch nicht geändert werden oder?
Code:
public void setZahl(Integer x)
ein final in den klammern wäre da nicht mehr nötig!?
also das mit der Zahl war ein schlechtes Beispiel von mir hehe
es geht darum, dass ich ein Verzeichnis aus einer .xml datei lese. Nur wird dieses Verzeichnis nur gelesen bzw. die Konstante nie verändert, du veränderst ja manchmal siehe oben die zahl = 5 usw.
ich will das verzeichnis nicht an 20 Stellen in verschiedenen Klassen auslesen, daher mache ich eine Konstante
Code:
final String SOURCE_DIR = settingsXML.getSourceDir();
Die Konstante übergebe ich dann an die verschiedenen Klassen.
public class Test
{
public static void main(String[] args)
{
final String STRING = "text";
test(STRING);
}
private static void test(String s)
{
s = "anders";
System.out.println(s);
}
}
Jeder darf für sich testen, was am Ende ausgegeben wird. Wers nicht abwarten kann:
hier >>>anders<<< (Einfach das zwischen den >>> und <<< markieren.)