Auf Thema antworten

Doch das was du gemacht hast sollte mit jeder Klasse gehen.

Es geht aber nicht mit z. B. int, weil das  zwar ein Datentyp ist, aber keine Klasse.

und ArrayList kannst du nur mit Klassen verwenden.

Hier z. B. mit String:

[code=Java]import java.util.ArrayList;


public class Main {


    static ArrayList<String> i = new ArrayList<>();


    public static void main(String[] args) {

        i.add("Test 0");


        System.out.println(i.get(0)); // gibt "Test 0" aus

        test(i);

        System.out.println(i.get(0)); // gibt "Test 1" aus

    }


    private static void test(ArrayList<String> i1) {

        i1.set(0, "Test 1");

    }


}[/code]


Du könntest von ArrayList erben und dann die set-Methode unterbinden. Dann gibt es jedes Mal einen Fehler beim Aufruf von set.

[code=Java]class MyArrayList<E> extends ArrayList<E>

{

    public E set(int index, E element)

    {

        throw new RuntimeException("never use set!");

    }

}[/code]



Oder du clonest dir die ArrayList (shallow .clone() oder deep copy).


Klassen, welche nicht verändert werden können, heißen immutable (String/Integer/...).



Oben