Mon Java est rouillé alors s'il vous plaît ou supporte avec moi. Dans C, je peux faire:
import org.apache.log4j.Logger; class myClass { private static final Logger logger = Logger.getLogger(myClass.class); ... }
3 Réponses :
Malheureusement, il n'y a pas de moyen plus facile si vous êtes dans un contexte de code code> code> (comme vous êtes ici). Si l'enregistreur était une variable d'instance, vous pouvez utiliser Pour ce cas particulier, une alternative consiste à utiliser log5j à la place. Log5J est une enveloppe autour de log4J avec des méthodes de commodité telles que et vous pouvez copier-coller la même déclaration dans toutes vos classes sans aucun problème. P> P> getclass () code>, mais vous devriez alors vous inquiéter des sous-classes.
getlogger () code>, qui déduit la classe correcte en marchant sur la pile. Donc, votre code deviendrait: P>
Le lien vers Log5J est cassé.
Je ne pouvais pas résister.
Voici la mise en œuvre de ce que les mmyers font référence mais fabriqués à la maison :) p>
Fondamentalement, vous lancez une exception et obtenez le 2e élément de la pile pour obtenir le nom de la classe. P>
I Pensez qu'il est préférable de l'avoir comme membre d'instance. p>
:) p> utilisation: p>
Cela ressemble à celui de ma propre emballage de journalisation faite maison. :)
StackTraceElement[] trace = Thread.currentThread().getStackTrace(); return trace[2].getClassName(); IMHO more neat way to get stack trace
Vous pouvez également l'avoir comme une variable d'instance et d'utiliser "cela.getclass ()". L'utilisation d'un attribut d'instance serait une meilleure idée, à moins bien sûr que vous en avez vraiment besoin en tant qu'attribut de classe.
Le compilateur sait de quelle classe c'est, mais vous ne saviez pas quelle classe vous écrivez? Désolé, je plaisante ... j'avais ce problème - presque le même code - mais je n'ai rien trouvé de mieux que MyClass.class: - / Besoin d'avoir une belle IDE avec des modèles de code et un refactoring ...
Je souhaite que Java ait ceci. Je recommanderais la syntaxe
static.class code>.