Ich habe eine Java-Anwendung, bei der ein Objektreferenz "Validate.Options" als Parameter an die Funktion "ValidateResult (Validate.Options Option)" übergeben wird und die Funktion iterativ genannt wird. Innerhalb dieser Funktion wird basierend auf der bestimmten Bedingung die Eigenschaft "enableProcessing" des übergebenen Objekts geändert, die bei der nächsten Iteration nicht zurückgesetzt wird. Wie kann ich diese Eigenschaft zurücksetzen?Java-Programmierfehler Pass-by-Referenz
Unten ist der Beispielcode.
public interface Validate
{
public List validate();
public class Options implements Serializable
{
public String name;
public boolean enableProcessing = true;
public Options(String name)
{
this.name = name;
}
}
}
public class Coder
{
public String name;
public int age;
public Coder(String name, int age)
{
this.name = name;
this.age = age;
}
public void ValidateResult(Validate.Options option)
{
if(option.name.equals(this.name) && option.enableProcessing)
{
option.enableProcessing = false;
//
//business logic and function call
//
}
}
public static void main(String[] args)
{
Validate.Options options = new Validate.Options("Test");
List<Coder> coders = new ArrayList<Coder>();
Coder coder = new Coder("Test", 28);
Coder coder1 = new Coder("XYZ", 18);
Coder coder2 = new Coder("Test", 16);
coders.add(coder);
coders.add(coder1);
coders.add(coder2);
for(Coder co : coders)
{
co.ValidateResult(options);
}
}
}
Sie 'enableProcessing'to für coder1 wahr geworden ?? –
Mögliches Duplikat von [Ist Java "pass-by-reference" oder "pass-by-value"?] (Http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass -by-value) –
Sie übergeben die Optionen an validateResult() und Sie legen sie dort auf false fest. Was ist das Problem mit'options.enableProcessing = true'? – tak3shi