Получить переменную в других классах
Мне нужно получить переменную 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
,
4 ответа
Вы получите ноль, потому что 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);
}
}
Пожалуйста, проверьте ссылку @ Почему статические переменные считаются злыми?
Вы можете добраться до него: main.inString
где main
это имя класса, где public static
переменная объявлена.
Поскольку вы сделали поле в классе статическим, вы используете имя класса для доступа к нему, т.е.
main.inString
Используйте JavaBeans и сохраняйте его как одно из его полей и используйте для этого методы getter и setter.
JavaBeans - это классы Java, которые имеют свойства. Думайте о свойствах как о частных переменных экземпляра. Поскольку они являются частными, единственный доступ к ним из-за пределов их класса - через методы в классе. Методы, которые изменяют значение свойства, называются методами установки, а методы, которые извлекают значение свойства, называются методами получения.
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.