Для запуска класса java используется "основной" метод stati c, присутствующий во всех обычных java программах. ОДНАКО, метод «конструктор» (на самом деле просто «конструктор») назван в честь имени «основного класса» и именно там вы инициализируете переменные независимо от того, вызываете ли вы объявленный метод в классе или получаете переменную stati c из стартового метода. "main".
Основной метод не требует какого-либо метода прохождения для получения из него переменной stati c для установки глобальной переменной stati c в классе, потому что это только 1 шаг в иерархии «область видимости» в классе (вот почему некоторые фреймворки передают переменные в глобальные без ввода метода, а вместо этого используют «void» в объявлении метода) НО вы не можете поместить вызов нестатического c метода в stati c раздел кода, такой как основной метод.
Удаление контекста stati c из переменной состоит в том, чтобы создать другую переменную с тем же именем в контексте nonstati c и преобразовать stati c переменная в нестатический c экземпляр.
например, для глобальной переменной типа String из основного метод во время создания глобально объявить
static String uselessRef1 = ""; // declared globally initialised
// following is declared inside the static method main
uselessRef1 = args[1]; // static argument 1 from the main method args[] array
// following is declared in global scope code or in the constructor code
String uselessRef1b = (String)uselessRef1; // (String) cast removes the static context of the String type and copies to non static version of the type
Пока зафиксировано в глобальных объявлениях, а не в конструкторе, они считаются загруженными в конструктор класса последовательно.
NB: вы можете поставить или создайте метод stati c в классе non-stati c, но не сделайте метод non stati c в классе stati c.
import.javax.swing.*;
public class ExampleStaticRemoval{
static String uselessRef1 = ""; // declared globally initialised
String uselessRef1b = "";
ExampleStaticRemoval(){
// following is declared in global scope code or in the constructor code
uselessRef1b = (String)uselessRef1; // (String) cast removes the static context of the String type and copies to non static version of the type
printOut();
}// end constructor
// program start method
public static void Main(String[] args){
new ExampleStaticRemoval();
// static global class variable uselessRef1 is assigned the local method value
// MUST BE OUTSIDE AT TOP TO BE GLOBAL
uselessRef1 = args[0] +" "+args[1]; // join static arguments 0 and 1 from the main method args[] array
}// end main
public void printOut(){
JOptionPane.showConfirmDialog(null,uselessRef1b, uselessRef1b, 0);
}//end method
} // end class