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

Мне нужно получить переменную 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.

Другие вопросы по тегам