2013-04-14 16 views
5

Potrzebuję uzyskać zmienną inString w innej klasie. Jak mogę to zrobić?Uzyskaj zmienną w innych klasach

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(" +", " ")); 
     } 
} 

Więc staram się wykorzystywać System.out.println(main.inString); w moim Textcl.class, ale dostać null.

+1

Ponieważ nigdy nie zainicjalizowałeś go w innym pustym miejscu, głównym uruchomieniu tam – Yoda

Odpowiedz

3

Otrzymasz wartość null, ponieważ inString nigdy nie jest inicjowany jako słusznie wskazany przez Roberta Kilara w komentarzu.

Odwołujesz się do zmiennych statycznych, używając nazwy klasy.

Przykład NazwaKolumny.nazwa_zmiennej. W twoim przypadku:

main.inString 

Uruchom swoją główną klasę. Po uruchomieniu inString jest inicjowany w konstruktorze klasy. Teraz możesz odnosić się do tego samego w Myclass jak poniżej.

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(); 
    } 
} 

Teraz w MyClass odwołaj się do zmiennej statycznej.

class MyClass { 

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

Można również przekazać zmienne do konstruktora klasy.

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(); 

    } 
} 

Następnie w myClass

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

Proszę sprawdzić Link @Why are static variables considered evil?

4

Możesz do niego dotrzeć przez: main.inString gdzie main to nazwa klasy, w której zadeklarowana jest zmienna public static.

+0

Nie zapomnij o wielkich literach S w 'main.inString' – xagyg

+0

wypróbuj to, ale nie możesz uzyskać zmiennej ( – antoxa2584

2

od wprowadzenia pola w klasie statycznej, należy użyć nazwy klasy do niego dostęp, tj

main.inString 
1

Użyj JavaBeans i przechowuj w nim jako jedno z pól i użyj do tego getters i seter.

JavaBeans są klasami Java, które mają właściwości. Pomyśl o właściwościach jako prywatnych instancyjnych zmiennych. Ponieważ są prywatne, jedyny sposób, w jaki można uzyskać dostęp do nich spoza ich klasy, odbywa się za pomocą metod dostępnych w klasie. Metody, które zmieniają wartość właściwości, nazywane są metodami ustawiającymi, a metody, które pobierają wartość właściwości, nazywane są metodami getter.

public class VariableStorage implements Serializable { 

    private String inString; 

    public String getInString() { 
     return inString; 
    } 

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

Ustaw zmienną w swoim sposobie poczty za pomocą:

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

Następnie użyj obiektu serialzation do serializacji tego obiektu i w drugiej klasie deserializowania tego obiektu.

W przypadku serializacji obiekt może być reprezentowany jako ciąg bajtów, który zawiera dane obiektu, a także informacje o typie obiektu i typach danych przechowywanych w obiekcie.

Po zapisaniu serializowanego obiektu do pliku można go odczytać z pliku i przekształcić w postać szeregową.Oznacza to, że informacje o typach i bajtach reprezentujących obiekt i jego dane mogą być użyte do odtworzenia obiektu w pamięci.

Jeśli potrzebujesz samouczka do tego, zapoznaj się z Serialization in Java.

Powiązane problemy