Student hat gesagt.:warum willst du das array final machen?
also .. was hast du im endeffekt vor. eventuell gibt es alternative lösungsansätze.
ich finde es immer gut, wenn man sagt, was man vorhat, damit auch andere ideen dargestellt werden können etc.
danke, ben.
public class cls {
public static final Obejct obj1= new Obejct ();
public static final Obejct obj3= new Obejct ();
public static final Obejct obj4= new Obejct ();
public static final Obejct obj5= new Obejct ();
public static final Object[] array = {obj1, obj2,obj3,obj4,obj5};
...
Du könntest einen Wrapper für das Array schreiben und nur lesenden Zugriff darauf gestatten:Wie kann man das allenfalls noch erreichen?
public MyArrayWrapper
{
private final static int[] data;
public MyArrayWrapper(int[] data)
{
MyArrayWrapper.data = data;
}
public int getIntAt(int index)
{
return MyArrayWrapper.data[index];
}
.....
}
deathbyaclown hat gesagt.:Eine häufie Stolperstelle ist ein konstanter Array, da man dessen Elemente ändern kann !
Code:private static final String[] TEST = {"Test", "Test2"}; public static void main(String[] args) { System.out.println(TEST[0]); // gibt "Test" aus TEST[0] = "HAHA"; System.out.println(TEST[0]); // gibt "HAHA" aus }
Um dem entgegen zu gehen niemals einen konstanten Array verwenden, sondern ihn in eine unmodifizierbare Liste umwandeln:
Code:private static final String[] TEST = {"Test", "Test2"}; public static final List TEST_LIST = Collections.unmodifiableList(Arrays.asList(TEST)); public static void main(String[] args) { TEST_LIST.set(0, "HAHA"); // wirft eine UnsupportedOperationException, keine Änderung möglich }