Statische Methoden können aufgerufen werden, ohne ein Objekt zu erstellen, während nicht statische Methoden eine Instanz des Objekts haben müssen, bevor sie aufgerufen werden können.
Es ist also unmöglich, in einer statischen Methode direkt auf eine nicht statische Methode zu verweisen, da nicht bekannt ist, welche nicht statische Methode des Objekts aufgerufen wird, und der Compiler keine Antwort geben kann, da kein Objekt vorhanden ist.
Java hat Angst, dass es das Objekt nicht finden kann.
Lösung:
Springs Set-Injection-Methode, statische Variablen durch nicht-statische Setter-Methoden injizieren, das Beispiel ist wie folgt
@PropertySource(value = {"classpath:config/application.yml"},ignoreResourceNotFound = true,encoding="UTF-8") @Service public class tank_task { private static String kafka; public static String getProfilesKafka() { return kafka; } @Value("${stream.kafka.servers}") public void setProfilesKafka(String kafka) { tank_task.kafka = kafka; } public static void tank_test(){ System.out.println("config static kafka :" + tank_task.getProfilesKafka()); } }
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass Springboot nicht auf nicht statische Variablen aus einem statischen Kontext verweisen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!