/ / Kann ich die Instanzmethode eines statischen Members im statischen Kontext aufrufen? - Java, Android, Sonnenfinsternis, statisch

Kann ich die Instanzmethode eines statischen Members im statischen Kontext aufrufen? - Java, Android, Sonnenfinsternis, statisch

Ich habe den folgenden Code:

private static AppWidgetService mInstance = null;

public static void startRefresh() {

AppWidgetProvider.setRefreshingState(mInstance
.getApplicationContext());
AppWidgetManager.refreshHandler(mInstance.getApplicationContext());
}

Manchmal versagt es in der Laufzeit und manchmal vergeht es.

für die obviuse Ausnahme:

cannot call a non-static method from a static context

Ich bin verwirrt wie mInstance ist statisch,

Die Instanzmethoden können also aus einem statischen Kontext aufgerufen werden. Nein?

wie kommt es dann, wenn manchmal scheitert?

Antworten:

1 für die Antwort № 1

Von einer statischen Funktion können Sie nur statische aufrufenFunktion oder statische Variable verwenden. Die Verknüpfung erfolgt zur Laufzeit. Obwohl Ihre Kompilierung in Ordnung ist, schlägt sie zur Laufzeit fehl, wenn ein Aufruf erfolgt. Versuchen Sie, Ihre Funktion nicht statisch zu machen, wenn Sie diesen Aufruf tätigen möchten.

ODER

Die einzige Möglichkeit, eine nicht statische Methode von einem aufzurufenstatische Methode soll eine Instanz der Klasse haben, die die nicht statische Methode enthält. Per Definition ist eine nicht statische Methode eine Methode, die als ON einer Instanz einer Klasse bezeichnet wird, während eine statische Methode zur Klasse selbst gehört.


0 für die Antwort № 2

Dieses Problem tritt auf, wenn Sie eine statische Methode aufrufenaus einem nicht statischen Block / Methode. In Ihrem Code sind sowohl "setRefreshingState ()" als auch "refreshHandler ()" statische Methoden. Um diese Methoden aufzurufen, müssen Sie static aus Ihrer Methodendefinition entfernen.