Pouvez-vous m'aider s'il vous plaît avec le code ci-dessous. L'erreur est la suivante: "Impossible d'utiliser ceci dans un contexte statique"
public class Sample2 {
/**
* @param args
*/
public static void main(String[] args)
{
Sample2 sam=new Sample2();
//Below code works fine
System.out.println(sam);
//Below code is displaying error
System.out.println(this);
}
}
Voir, le mot-clé "this" fait référence à l'objet actuel pour lequel la méthode est sous exceution. En tant que, vous ne pouvez pas appeler une méthode statique en utilisant une instance de classe. C'est pourquoi, "ceci" ne peut pas être utilisé dans l'exemple ci-dessus dans une méthode statique, car elle tente d'imprimer une instance actuelle qui n'est pas créée du tout. Donc, je pense que c’est la raison pour laquelle il ya une erreur de compilation.
Le mot clé this
fait référence au instance de la classe. Dans un contexte statique, vous n'avez pas d'instance, vous ne pouvez donc pas vous y référer.
Pour plus d'informations, reportez-vous à cette réponse: Que signifie "ceci" en Java?
En Java, vous ne pouvez pas utiliser cela dans des méthodes statiques (contexte statique).
Les méthodes Static
ne pointent sur aucune instance de la classe englobante.
Une méthode statique ne peut en aucun cas faire référence à «ceci» ou à des «super» mots clés.
Référez-vous au mot clé official docs on this.
Si nous essayons d'accéder à cela depuis un contexte statique, le compilateur n'a aucun moyen de deviner quelle instance, vous faites aussi référence. main est une méthode statique ici.
écrire cela signifie que, dans un contexte statique, nous attendons le retour de l'adresse de l'objet. Bien qu'il soit totalement légal d'avoir un objet appelant des méthodes statiques, ce n'est pas une obligation. Donc, le compilateur arrête toute possibilité d'erreur si l'objet n'est pas créé pour la classe.