2016-05-10 16 views
0

Also scheint ich ein wenig mit statischen im Allgemeinen zu kämpfen. Was genau macht Java in Java und wie behebt man es? Zum Beispiel, hier ist ein Stück CodeStatische Verwendung mit Java

public class StaticProblem 
{ 
    static int number; 
    static int valOne, valTwo, valThree; 

    public static void main(String args) 
    { 
     // stuff 

     valOne = method1(number); 
     valThree = method2(val1, val2); 
    } 

    public static int method1(int parameter) 
    { 
     int var; 
     // stuff 
     return parameter + var; 
    } 

    public static int method2(int parm1, int parm2) 
    { 
     int othervar; 
     // more stuff 

     return parm1 + parm2 + othervar; 
    } 

    : 
} 

Wie genau würde man über die Festsetzung der „statischen“ Problem gehen, so dass statische wird nicht mehr verwendet. Ich verstehe, dass das Statische in Java den Wert eines Objekts mit neuen Objekten teilen kann, die erstellt werden (zum Beispiel teilen 15 Karten das gleiche im Tank verbliebene Gas) - wenn ein Auto leer wird, dann wird der Rest leer auch). Ich dachte, ich wüsste, wie man diesen Code repariert, und ich nahm an, dass es ein neues StaticProblem-Objekt in der Hauptmethode machte. Ich bin jedoch ein bisschen verloren.

+0

wo wird 'val1' deklariert? – Bohemian

+0

Entschuldigung, damit es "valOne" ist. - behoben – Baconlord99

+0

Haben Sie versucht, ein neues "StaticProblem" -Objekt in der Hauptmethode zu erstellen? Was ist passiert, als du es getan hast? –

Antwort

0

Ihre Methoden müssen statisch sein, damit sie aufgerufen werden können, da kein Objekt (Klasseninstanz) zum Aufruf der Methoden vorhanden ist. Sie könnten das ändern, indem Sie etwas wie das Folgende schreiben:

public class Program { 
    public static void main(String[] args) { 
     new Program.run(); //this creates an object so you can get rid of static methods 
    } 

    void run() { 
     //your code goes here instead of inside main 
     ... 
    } 

    void method1() { //these no longer have to be static 
     ... 
    } 

    void method2() { 
     ... 
    } 
}