Vous pouvez le faire en créant (sans lancer) une nouvelle exception et en inspectant la trace de la pile. Votre classe sera l'élément zéro car c'est l'origine de l'Exception. C'est un peu faux, mais ça va marcher.
System.out.println(new Exception().getStackTrace()[0].getClassName());
Vous pouvez faire la même chose avec la classe Thread. Cela me semble plus propre, mais la ligne est légèrement plus longue. Votre classe est maintenant le premier élément de la pile plutôt que le zéro. Thread.getStackTrace() est le zéro.
System.out.println(Thread.currentThread().getStackTrace()[1].getClassName());
Par exemple, en tapant MyClass.class.getName() est plus utile que juste "Myclass".
Au contraire, si vous renommez MyClass en utilisant la fonction de refactoring de votre IDE, il remplacera MyClass.class.getName() avec RenamedClass.class.getName(). Si vous mettez une chaîne, vous devrez le faire manuellement.
Une méthode statique n'est associée qu'à la classe dans laquelle elle est déclarée. Il me semble qu'il n'est pas nécessaire de avoir un moyen d'accéder à la classe autre que le référencer explicitement par son nom. –