Получить переменную в других классах
Мне нужно получить переменную 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
.
Ответы
Ответ 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.