2013-04-14 6 views
5

Ich brauche Variable inString in einer anderen Klasse. Wie kann ich das machen?Variable in anderen Klassen erhalten

public class main { 
    public static StringBuffer inString; 


    public static void main(String[] args) { 
     inString = new StringBuffer("Our aim is to make a 15 realistic game, where grinding powerlines and doing a tailwhip isn't easy, like in the real world. A game in which you will feel like you're actual riding. A game in which creativity and beauty are combined. "); 
     inString = new StringBuffer(inString.toString().replaceAll(" +", " ")); 
     } 
} 

Also versuche ich System.out.println(main.inString); in meinem Textcl.class zu verwenden, aber null zu bekommen.

+1

Da Sie es nie in anderen statischen void main Sie dort ausgeführt haben – Yoda

Antwort

3

Sie erhalten null, weil inString nie so initialisiert wird, wie Robert Kilar im Kommentar richtig darauf hingewiesen hat.

Sie verweisen auf statische Variablen, indem Sie den Klassennamen verwenden.

Beispiel Klassenname.Variablenname. In Ihrem Fall

main.inString 

Führen Sie Ihre Hauptklasse. Wenn Sie InString ausführen, wird im Konstruktor der Klasse initialisiert. Jetzt können Sie in Myclass auf das gleiche wie unten verweisen.

public class main { 
public static StringBuffer inString; 

public main() 
{ 
inString = new StringBuffer("Our aim is to make a 15 realistic game, where grinding powerlines and doing a tailwhip isn't easy, like in the real world. A game in which you will feel like you're actual riding. A game in which creativity and beauty are combined. "); 
inString = new StringBuffer(inString.toString().replaceAll(" +", " ")); 
new MyClass(); 
} 
public static void main(String[] args) { 
    new main(); 
    } 
} 

Jetzt in MyClass beziehen sich auf die statische Variable.

class MyClass { 

public MyClass() { 
    System.out.println("............."+main.inString);// refer to static variable 
} 
} 

Sie können auch Variablen an den Konstruktor einer Klasse übergeben.

public class main { 
public StringBuffer inString; 

public main() 
    { 
    inString = new StringBuffer("Our aim is to make a 15 realistic game, where grinding powerlines and doing a tailwhip isn't easy, like in the real world. A game in which you will feel like you're actual riding. A game in which creativity and beauty are combined. "); 
    inString = new StringBuffer(inString.toString().replaceAll(" +", " ")); 
    new MyClass(inString); 
} 
public static void main(String[] args) { 
    new main(); 

    } 
} 

Dann in Myclass

public class MyClass 
{ 
     public MyClass(StringBuffer value) 
     { 
      System.out.println("............."+value); 
     } 
} 

Überprüfen Sie bitte den Link @Why are static variables considered evil?

4

Sie können darauf zugreifen: main.inString Dabei ist main der Name der Klasse, in der public static Variable deklariert ist.

+0

Vergessen Sie nicht, die Großbuchstaben S in 'main.inString' – xagyg

+0

versuchen Sie dies, aber kann nicht Variable ( – antoxa2584

2

Da Sie das Feld in der Klasse statisch gemacht, verwenden Sie den Klassennamen für den Zugriff, das heißt

main.inString 
1

Verwenden Sie JavaBeans und speichern Sie es als eines seiner Felder und Verwenden Sie Getter und Setter dafür.

JavaBeans sind Java-Klassen mit Eigenschaften. Stellen Sie sich Eigenschaften als private Instanzvariablen vor. Da sie privat sind, können sie nur von außerhalb ihrer Klasse über Methoden in der Klasse aufgerufen werden. Die Methoden , die den Wert einer Eigenschaft ändern, werden Setter-Methoden genannt, und die Methoden, die den Wert einer Eigenschaft abrufen, werden als Getter-Methoden bezeichnet.

public class VariableStorage implements Serializable { 

    private String inString; 

    public String getInString() { 
     return inString; 
    } 

    public void setInString(String inString) { 
     this.inString = inString; 
    } 
} 

die Variable in Ihrer E-Mail-Methode ein, indem Sie mit:

VariableStorage variableStorage = new VariableStorage(); 
variableStorage.setInString(inString); 

Dann Objekt serialzation verwenden dieses Objekt und in der anderen Klasse deserialize dieses Objekt zu serialisieren.

Bei der Serialisierung kann ein Objekt als eine Sequenz von Bytes dargestellt werden, die die Daten des Objekts sowie Informationen über den Objekttyp und die im Objekt gespeicherten Datentypen enthält.

Nachdem ein serialisiertes Objekt in eine Datei geschrieben wurde, kann es aus der Datei gelesen und deserialisiert werden.Das heißt, die Typinformationen und Bytes, die das Objekt und seine Daten darstellen, können verwendet werden, um das Objekt im Speicher neu zu erstellen.

Wenn Sie ein Tutorial dazu benötigen, beziehen Sie sich auf Serialization in Java.

Verwandte Themen