Aufrufen von nicht-statischen Methoden von anderen Klassen

Mache ich meine Aufgabe, und über einige Fehler. In einer Klasse habe ich diese Methode:

public class Class1{
    public static boolean winningRecord(){
        final int WINNING_RECORD;
        return Class2.getPoints() > WINNING_RECORD;
    }
}

class Class2{
    int wins = 0;
    public int getPoints(){
        return wins; //More to it but to keep it simple I'll leave that out
    }
}

Jetzt bin ich immer den Fehler "Non-Static method cannot be referenced from a static context...", also machte ich getPoints() eine statische Methode, die die Variablen statische als auch, und es funktioniert. Aber in einer anderen Methode für den Druck von Objekten funktioniert es nicht (ich glaube, es ist wegen dem static-Schlüsselwort).

Also meine Frage nach all diesem gibt es eine Möglichkeit, eine Methode aufrufen, ohne eine Instanz der zweiten Klasse? Dies ist die Allgemeine Idee, die code, die ich habe, es sollte Ihnen eine Vorstellung davon, was Los ist, wenn nicht werde ich mehr hinzuzufügen, um es.

  • Nein, es ist nicht möglich.
  • getPoints können nicht statisch sein, es sei denn wins ist statisch. Und wenn wins statisch ist, dann wird es immer nur eine Kopie wins, geteilt durch die gesamte Anwendung. Sie müssen entscheiden, wie viele Kopien von wins Sie brauchen. (Und "singleton' s beiseite, es ist generell albern, müssen Sie eine Klasse nur für die Speicherung einer statischen Daten Wert.)
  • Ich schlage vor, Sie setzen Sie auf der Tastatur nach unten, und stattdessen Lesen Sie ein gutes Buch über Java. Wenn Sie verstehen, was static bedeutet, Sie sollten in der Lage sein zu verstehen, warum Sie diese Fehler - und der am besten geeignete Weg, um Sie zu beheben.
  • Sie müssen deutlich machen, "Aber in einer anderen Methode für den Druck von Objekten funktioniert es nicht (ich glaube, es ist wegen dem static-Schlüsselwort)." machen getPoints() static sollte nicht in sich selbst ein problem.
  • Ich habe eine andere Methode, die druckt Objekte, aber wenn es geht, um drucken Sie die Variablen Werte, die es nur Ausgänge der gleichen Sache, die für die einzelnen Objekte.
  • Was Sie fordern ist rein bezogen auf das Verständnis von OOPS Grundlagen.
  • Class2 hat eine Instanz-variable namens gewinnt. getPoints() gibt, dass die Instanz-variable, wenn Sie noch keine Instanz von Class2 dann macht es keinen Sinn, dass der Aufruf der Methode statisch würde nie funktionieren, daher der Grund, warum Sie den Fehler. Wie @JonSkeet sagte, machen Sie sich vertraut mit dem, was static bedeutet. Es zahlt große Dividenden.
  • Hat Ihr real-code geben Sie einen Wert für WINNING_RECORD? Wie es scheint, sollte es nicht kompilieren, ohne dass. final int WINNING_RECORD = 232;

InformationsquelleAutor user123 | 2013-01-28
Schreibe einen Kommentar