I have a MainApplication class declared in the AndroidManifest.xml
    <application
    android:name=".MainApplication" ...other stuffs >
that I used as a global context for my app accessible outside of any Activity or Fragment.
if I declare my MainApplication class as:
public class MainApplication extends Application {
private static MainApplication instance;
public MainApplication() {
    instance = this;
}
public static MainApplication shared() {
    return instance;
}
}
Everything is fine, and I can then use it then like this:
val c = MainApplication.shared()
return c.getSharedPreferences(prefsKey, Context.MODE_PRIVATE)
However if I declare the same class as a Kotlin class and call MainApplication.shared I get an error saying I'm calling sharedPreferences on null object
class MainApplication: Application() {
companion object {
    @JvmStatic
    val shared: MainApplication = MainApplication()
}
Is there an issue with Kotlin class declaration and singleton (SharedInstances) or Am I making an error trying to declare this class like this?
 
     
    