Подтвердить что ты не робот

Получить переменную в других классах

Мне нужно получить переменную inString в другом классе. Как я могу это сделать?

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

Поэтому я пытаюсь использовать System.out.println(main.inString); в своем Textcl.class, но получаю null.

4b9b3361

Ответ 1

Вы получите нуль, потому что inString никогда не инициализируется, как правильно указал Роберт Килар в комментарии.

Вы ссылаетесь на статические переменные, используя имя класса.

Пример ClassName.variablename. В вашем случае

    main.inString 

Запустите свой основной класс. При запуске inString инициализируется в конструкторе класса. Теперь вы можете ссылаться на то же самое в Myclass, как показано ниже.

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

Теперь в MyClass обратитесь к статической переменной.

class MyClass {

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

Вы также можете передавать переменные в конструктор класса.

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

    }
}

Затем в Myclass

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

Пожалуйста, проверьте ссылку @Почему статические переменные считаются злыми?

Ответ 2

Вы можете получить к нему: main.inString где main - это имя класса, в котором объявлена ​​переменная public static.

Ответ 3

Поскольку вы создали поле в статическом классе, вы используете его для доступа к нему, то есть

main.inString

Ответ 4

Используйте JavaBeans и сохраните в нем как одно из своих полей и используйте для этого геттеры и настройки.

JavaBeans - это классы Java, обладающие свойствами. Подумайте о свойствах как переменных частного экземпляра. Поскольку они являются частными, единственный способ, которым они могут получить доступ из-за пределов своего класса, - это методы в классе. методы, изменяющие значение свойства, называются методами setter, а методы, которые извлекают значение свойства, называются методами getter.

public class VariableStorage implements Serializable  {

    private String inString;

    public String getInString() {
        return inString;
    }

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

Задайте переменную в методе почты, используя:

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

Затем используйте сериализацию объектов для сериализации этого объекта, а в другом классе десериализуйте этот объект.

В сериализации объект может быть представлен как последовательность байтов, которая включает данные объекта, а также информацию о типе объекта и типах данных, хранящихся в объекте.

После того, как сериализованный объект был записан в файл, он может быть прочитан из файла и десериализован. То есть информация о типе и байты, которые представляют объект и его данные, могут использоваться для воссоздания объекта в памяти.

Если вам нужен учебник для этого, обратитесь к Сериализация в Java.