Ich habe in einem Übungs-Programm aus einem Buch die folgende Methode:
public synchronized ArrayList getPrimes()
{
if(isDone())
{
return(primesFound);
}
else
{
return((ArrayList)primesFound.clone());
}
}
Ich weiß nicht, ob es ohne Kenntnis des gesamten Programms möglich ist, eine Prognose zu wagen (weshalb ich gleich noch ein paar weitere Methoden auszugsweise mitliefere). Ich verstehe den Unterschied bei den Rückgaben nicht. Im ersteren Fall (if) wird eine ArrayList namens primesFound zurückgegeben. Im zweiten (else) Fall, wird die Kopie der ArrayList zurückgegeben. Wo ist denn da der Unterschied?
Noch einige weitere Methoden aus derselben Klasse des Programms:
public PrimeList(int numPrimes, int numDigits, boolean runInBackground)
{
primesFound = new ArrayList(numPrimes);
this.numPrimes = numPrimes;
this.numDigits = numDigits;
if(runInBackground)
{
Thread t = new Thread(this);
// Geringe Priorität, um den Server nicht auszubremsen
t.setPriority(Thread.MIN_PRIORITY);
t.start();
}
else
{
run();
}
}
public void run()
{
BigInteger start = Primes.random(numDigits);
for(int i=0; i