static und generische Listen



  • Hallo zusammen,

    irgendwie habe ich wider Erwarten das static noch nicht so ganz begriffen. Warum muss ich hier die ArrayList als static deklarieren? Könnt ihr mir das erklären?

    static 
    	ArrayList<Object> lo = new ArrayList<Object>();
    
    	public static void main(String[] args){
    		ls.add(new String("Hallo"));
    	}
    

    Außerdem weiß ich nicht, warum dieser Code funktioniert:

    static ArrayList<String> list = new ArrayList<String>();
    
    	private static void printCollection(ArrayList list) {
    		for(Object element: list)
    			System.out.println(element);
    	}
    
    	public static void main(String[] args){
    		list.add("Hallo");
    		printCollection(list);
    	}
    

    Warum kann ich der printCollection eine generische Liste übergeben?

    Vielen Dank
    lg, freakC++



  • Verdammt! Ich habe diesen Eintrag einfach ins Matheforum geschrieben. Sorry, in meinen Händen ist einfach schon der Gang in dieses Forum drin. Bitte verschiebt diesen Thread ins Java - Forum.

    Sorry 🙂



  • @Frage 1: Weil du die Liste in einer statischen Methode = main aufrufst.
    @Frage 2: Weil es zur Laufzeit nur eine einzige Klasse ArrayList gibt, die Instanzen der Klasse Object speichert. Andere Typen werden durch Casts gespeichert.



  • freakC++ schrieb:

    Hallo zusammen,

    irgendwie habe ich wider Erwarten das static noch nicht so ganz begriffen. Warum muss ich hier die ArrayList als static deklarieren? Könnt ihr mir das erklären?

    Weil main static ist?!
    Von statischen Methoden aus, und ohne andere Objektreferenz, kann nur auf statische Felder zugegriffen werden.



  • Dieser Thread wurde von Moderator/in Jester aus dem Forum Mathematik und Physik in das Forum Java verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten