2016-04-03 9 views
0

In Ordnung, also habe ich eine Treiberklasse und eine Arraylist (wie Sie wahrscheinlich erraten können).Treiber Klasse ArrayList Schwierigkeit

Meine Arraylist ist voller Strings und ich greife auf sie durch einen Getter zu, den ich in meiner anderen Klasse erstellt habe.

Es heißt, dass "die statische Methode getMouseList() vom Typ Desktop sollte auf eine statische Weise zugegriffen werden". Wie soll ich das beheben? Siehst du irgendwelche anderen Fehler?

Danke an alle, die helfen können!

hier ist also mein Code:

Klasse:

static ArrayList <String> Strings; 


public static void main(String[] args) { 
    Strings = new ArrayList <String>(); 
     Strings.add("goodbye"); 
     Strings.add("hi"); 
     Strings.add("hello"); 
} 

    public static ArrayList<String> getStrings() { 
     return Strings; 
    } 

Treiberklasse:

Desktop test4 = new Desktop(); 
System.out.println(test4.getStrings()); 

Antwort

3

Da es statisch ist, es zu seiner Klasse gehört, nicht auf eine Instanz der Klasse. Daher müssen Sie darauf mit der Klasse zugreifen: Desktop.getStrings()

UPDATE Ich müsste mehr von Ihrem Code sehen, um genau zu erklären, was vor sich geht. Also werde ich versuchen zu erklären, was ich mir vorstelle, ist dein Code. Bitte beachten Sie, dass Java-Programme von einer Hauptmethode ausgehen. Abhängig davon, wie Sie Ihr Programm ausführen, wird einer von ihnen aufgerufen, die anderen nicht.

In jedem Fall wäre eine Möglichkeit, eine andere statische Methode in der Desktop zu erstellen und den Code für die Initialisierung von Haupt diesem Verfahren, wie zum Beispiel bewegen:

public static void initializeStrings(){ 
    Strings = new ArrayList <String>(); 
    Strings.add("goodbye"); 
    Strings.add("hi"); 
    Strings.add("hello"); 
} 

Dann stellen Sie sicher, dass Sie diese Methode aufrufen, über Desktop.initializeStings(); versucht, die Strings Array vor zuzugreifen (zum Beispiel in dem Beginn des eigentlichen Hauptmethode des Programms

EDIT 2:. OK, so sollte Ihr Haupt nun wie folgt aussehen:

public static void main(String[] args) { 
    Desktop.initializeStrings(); 
    Driver.doSomething(); 
} 

und Ihre Driver ‚s-Methode (innen Driver Klasse):

public static void doSomething() { 
    //some code 

    //strings are initialized and will get printed 
    System.out.println(Desktop.getStrings()); 
} 

, dass Sie einen Hinweis auf geben sollte, wie man sich vorwärts bewegen. Nebenbei bemerkt, behindert all dies die objektorientierte Natur von Java. Ich würde vorschlagen, ein Tutorial in Java objektorientierten Programmiermodell: https://docs.oracle.com/javase/tutorial/java/index.html

+0

Der Fehler ist weg, aber es gibt immer noch Null. Irgendwelche Vorschläge? –

+2

Dann bedeutet dies, dass es noch nicht initialisiert wurde. In dem von Ihnen bereitgestellten Codebeispiel erfolgt die Initialisierung in der Hauptmethode. Ich nehme jedoch an, dass der Code, den Sie ausführen, höchstwahrscheinlich eine andere Hauptmethode verwendet und nicht die im Beispiel, daher wird das Strings-Array niemals initialisiert. – JChrist

+0

Das macht Sinn, aber ich weiß einfach nicht, wie ich das machen soll, weil ich ein Neuling bin. Entschuldigung, aber kann ich noch ein wenig Hilfe bekommen. Ich füge der Arraylist in meiner Hauptleitung Sachen hinzu und versuche, sie in meinem Fahrer zu nennen. Wie soll ich das ändern? –