6
votes

En Java y a-t-il une version statique de 'this'

Je sais que c'est assez mineur, mais en haut de chaque classe, je finis par copier et coller, puis changeant la ligne de code suivante.

private static final String TAG = this.class.getName();


4 commentaires

Il est également sujet aux erreurs si vous faites une faute de frappe pour myClass.class avec un nom de classe valide. Arrivé à moi plus d'une fois ;-)


Ou si vous êtes négligent de la "réutilisation" CUT-N-CLET.


nouvel objet () {} .getclass (). getenclosc.) ou quelque chose, comme mentionné sur une question en double. (Coût supplémentaire.)


Comme ça, mieux que de jeter et de attraper des exceptions.


6 Réponses :


1
votes

Ce est synonyme de choses spécifiques. Pour le niveau de classe, utilisez le nom de la classe ou appelez-les explicitement, si vous appelez à partir de la classe.


0 commentaires

2
votes

Malheureusement, il n'y a aucun moyen d'éviter cela. Vous devez spécifier le jeton de classe pour chaque classe explicitement. La réflexion pourrait éventuellement fournir une certaine manière générale de traiter cela, mais il serait tellement plus moche que cela ne vaut pas la peine d'y penser: -)


1 commentaires

Pas possible avec une réflexion. Vous devez commencer par un classe quelque part et que vous soyez déjà le premier problème déjà.



1
votes

Vous ne savez pas comment j'ai souhaité quelque chose comme ça ( ceci.class ), mais malheureusement, non.


0 commentaires

7
votes

Vous pouvez définir un modèle Eclipse Modèle , appelé Tag , par exemple: xxx

puis, tapez tag suivi de ctrl + espace et il insérera cette instruction.

J'utilise cette méthode pour déclarer des enregistreurs dans mes classes.

Alternativement, interrogeez la Trace de pile du fil de courant: xxx


2 commentaires

GetStackTrace () [1] ou GetStackTrace () [0] Comme mentionné plus tard?


Devrait être gestactacttrace () [1] sur un fil. L'autre réponse est différente car elle crée une nouvelle exception.



3
votes

Un piratage laid, mais cela vous donnera le nom de la classe actuelle:

étiquette de chaîne statique privée = Nouvelle RunTimeException (). GetStackTrace () [0] .getClassName ();


0 commentaires

1
votes

Utilisateur Dogbane a suggéré de interroger la trace de la pile du fil code> code>. On peut déménager ce code dans une classe nommée classinfo code>: xxx pré>

puis, à partir d'un contexte statique, nous pouvons obtenir le nom de la classe en faisant référence à classinfo .ClassName () code> ou simplement classname () code> Si nous utilisons une importation statique. p>

exemple: p>

MyClass
MyClass$Inner


0 commentaires