Pourquoi getcontexteapplication() dans le constructeur de l'Activité throws exception de pointeur null?

Après un certain temps passé à la chasse au bug, il s'avère que :

public class MainActivity extends BaseActivity { //BaseActivity extends Activity

    public MainActivity() {
        super();
        getApplicationContext(); //NPE here
    }
}

Pourquoi ? Où cela est-il documenté ?
Froyo

Ne jamais mettre en œuvre un constructeur sur une activité.
C'était un service en fait 😀 le Soin de fournir certaines entrées - liens - liens. De toute façon, ne devrait-ce pas/n'est-ce pas documenté quelque part ?
"C'était un service fait", le code que vous avez copié ci-dessus montre une activité mise en œuvre d'un constructeur. "De toute façon, ne devrait-ce pas/n'est-ce pas documenté quelque part ?" -- developer.android.com/reference/android/app/... "Appelée lorsque l'activité commence. C'est là que la plupart d'initialisation devrait aller: appel setContentView(int) pour gonfler l'activité de l'INTERFACE utilisateur, à l'aide de findViewById(int) de programmation pour interagir avec les widgets de l'INTERFACE utilisateur, appelant managedQuery() pour récupérer les curseurs pour les données en cours d'affichage, etc."
Nope, pas un problème. Toute méthode peut lever une exception NullPointerException, il n'a pas à être déclarée. Et, même SI elle a retourné null au lieu de lancer une exception NullPointerException, vous vous retrouvez jeter l'exception de vous-même plus tard, lorsque vous avez essayé d'utiliser la valeur null. Btw, en retournant une valeur null et en jetant un NPE sont conceptuellement différentes choses.
Je sais - et non, je pense que ce comportement est contre-intuitif. Une méthode n'est pas censé jeter un décoché exception, sauf A) si elle dispose d'un bug ou B), on utilise de manière erronée - mais ce mal doit être dans les docs - comme dans la plupart des classes de l'api java (jette NPE si l'argument est null, etc) - et j'ai l'habitude de vérifier la valeur null et je voudrais donc (probablement) pas tomber de nulle valeur de retour (je sais que c'est différent d'un NPE!)

OriginalL'auteur Mr_and_Mrs_D | 2013-04-14