Est il possible de trouver la methode dans la quelle je me trouve ?
Pour une classe je fait MonObjet.getClass() ou MaClasse.class.
Mais pour une méthode ?
J'aimerais faire un truc du genre :
class MaClasse
{
void MaMethode()
{
System.out.println("je suis dans "
+ this.getClass().to_string
+ "."
+ this.getMethode().to_string);
}
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Claude Arbaut
JBB wrote:
Est il possible de trouver la methode dans la quelle je me trouve ? Pour une classe je fait MonObjet.getClass() ou MaClasse.class. Mais pour une méthode ? J'aimerais faire un truc du genre :
class MaClasse {
void MaMethode() { System.out.println("je suis dans " + this.getClass().to_string + "." + this.getMethode().to_string); } }
-> je suis dans Maclasse.MaMethode
Je vais sûrement dire une bêtise, mais tu le sais puisque tu tapes le code de la méthode ;-) Le seul intérêt réel est de savoir quelle est exactement la classe, il me semble (parce que ça peut être n'importe quel descendant).
JBB wrote:
Est il possible de trouver la methode dans la quelle je me trouve ?
Pour une classe je fait MonObjet.getClass() ou MaClasse.class.
Mais pour une méthode ?
J'aimerais faire un truc du genre :
class MaClasse
{
void MaMethode()
{
System.out.println("je suis dans "
+ this.getClass().to_string
+ "."
+ this.getMethode().to_string);
}
}
-> je suis dans Maclasse.MaMethode
Je vais sûrement dire une bêtise, mais tu le sais puisque tu tapes le
code de la méthode ;-) Le seul intérêt réel est de savoir quelle
est exactement la classe, il me semble (parce que ça peut être n'importe
quel descendant).
Est il possible de trouver la methode dans la quelle je me trouve ? Pour une classe je fait MonObjet.getClass() ou MaClasse.class. Mais pour une méthode ? J'aimerais faire un truc du genre :
class MaClasse {
void MaMethode() { System.out.println("je suis dans " + this.getClass().to_string + "." + this.getMethode().to_string); } }
-> je suis dans Maclasse.MaMethode
Je vais sûrement dire une bêtise, mais tu le sais puisque tu tapes le code de la méthode ;-) Le seul intérêt réel est de savoir quelle est exactement la classe, il me semble (parce que ça peut être n'importe quel descendant).
vc.spam
Salut,
Ce que tu cherches se trouve dans la stacktrace des exceptions...
StackTraceElement el = new Exception().getStackTrace()[0];
Après tu as el.getMethodName() & cie...
Tu peux mettre ça dans une méthode static (d'une classe utilitaire), mais il faut penser à remonter d'un cran dans la stackTrace (getStackTrace()[1];).
Attention, c'est gourmand en ressource, donc à n'utiliser qu'avec discernement...
A+
Vincent
Est il possible de trouver la methode dans la quelle je me trouve ? Pour une classe je fait MonObjet.getClass() ou MaClasse.class. Mais pour une méthode ? J'aimerais faire un truc du genre :
class MaClasse {
void MaMethode() { System.out.println("je suis dans " + this.getClass().to_string + "." + this.getMethode().to_string); } }
-> je suis dans Maclasse.MaMethode
Merci,
Salut,
Ce que tu cherches se trouve dans la stacktrace des exceptions...
StackTraceElement el = new Exception().getStackTrace()[0];
Après tu as el.getMethodName() & cie...
Tu peux mettre ça dans une méthode static (d'une classe utilitaire),
mais il faut penser à remonter d'un cran dans la stackTrace
(getStackTrace()[1];).
Attention, c'est gourmand en ressource, donc à n'utiliser qu'avec
discernement...
A+
Vincent
Est il possible de trouver la methode dans la quelle je me trouve ?
Pour une classe je fait MonObjet.getClass() ou MaClasse.class.
Mais pour une méthode ?
J'aimerais faire un truc du genre :
class MaClasse
{
void MaMethode()
{
System.out.println("je suis dans "
+ this.getClass().to_string
+ "."
+ this.getMethode().to_string);
}
}
Ce que tu cherches se trouve dans la stacktrace des exceptions...
StackTraceElement el = new Exception().getStackTrace()[0];
Après tu as el.getMethodName() & cie...
Tu peux mettre ça dans une méthode static (d'une classe utilitaire), mais il faut penser à remonter d'un cran dans la stackTrace (getStackTrace()[1];).
Attention, c'est gourmand en ressource, donc à n'utiliser qu'avec discernement...
A+
Vincent
Est il possible de trouver la methode dans la quelle je me trouve ? Pour une classe je fait MonObjet.getClass() ou MaClasse.class. Mais pour une méthode ? J'aimerais faire un truc du genre :
class MaClasse {
void MaMethode() { System.out.println("je suis dans " + this.getClass().to_string + "." + this.getMethode().to_string); } }
-> je suis dans Maclasse.MaMethode
Merci,
David
Le Fri, 16 Jun 2006 06:14:56 -0700, vc.spam a écrit :
Salut,
Ce que tu cherches se trouve dans la stacktrace des exceptions...
StackTraceElement el = new Exception().getStackTrace()[0];
Il vaut mieux passer par Throwable.
Le Fri, 16 Jun 2006 06:14:56 -0700, vc.spam a écrit :
Salut,
Ce que tu cherches se trouve dans la stacktrace des exceptions...
StackTraceElement el = new Exception().getStackTrace()[0];
Le Fri, 16 Jun 2006 06:14:56 -0700, vc.spam a écrit :
Salut,
Ce que tu cherches se trouve dans la stacktrace des exceptions...
StackTraceElement el = new Exception().getStackTrace()[0];
Il vaut mieux passer par Throwable.
Xavier Tarrago
Je ne sais pas faire et je ne pense pas que ça soit possible de façon portable et documentée (c'était la mauvaise nouvelle). Par contre, le Logger (classe java.util.logging.Logger) fait ça. Une partie du code est accessible et ça vaut peut-etre le coup de s'y intéresser.
"JBB" a écrit dans le message de news:4492a34c$0$13577$
Est il possible de trouver la methode dans la quelle je me trouve ? Pour une classe je fait MonObjet.getClass() ou MaClasse.class. Mais pour une méthode ? J'aimerais faire un truc du genre :
class MaClasse {
void MaMethode() { System.out.println("je suis dans " + this.getClass().to_string + "." + this.getMethode().to_string); } }
-> je suis dans Maclasse.MaMethode
Merci,
Je ne sais pas faire et je ne pense pas que ça soit possible de façon
portable et documentée (c'était la mauvaise nouvelle).
Par contre, le Logger (classe java.util.logging.Logger) fait ça. Une partie
du code est accessible et ça vaut peut-etre le coup de s'y intéresser.
"JBB" <JBB@nospam.jbb> a écrit dans le message de
news:4492a34c$0$13577$636a55ce@news.free.fr...
Est il possible de trouver la methode dans la quelle je me trouve ?
Pour une classe je fait MonObjet.getClass() ou MaClasse.class.
Mais pour une méthode ?
J'aimerais faire un truc du genre :
class MaClasse
{
void MaMethode()
{
System.out.println("je suis dans "
+ this.getClass().to_string
+ "."
+ this.getMethode().to_string);
}
}
Je ne sais pas faire et je ne pense pas que ça soit possible de façon portable et documentée (c'était la mauvaise nouvelle). Par contre, le Logger (classe java.util.logging.Logger) fait ça. Une partie du code est accessible et ça vaut peut-etre le coup de s'y intéresser.
"JBB" a écrit dans le message de news:4492a34c$0$13577$
Est il possible de trouver la methode dans la quelle je me trouve ? Pour une classe je fait MonObjet.getClass() ou MaClasse.class. Mais pour une méthode ? J'aimerais faire un truc du genre :
class MaClasse {
void MaMethode() { System.out.println("je suis dans " + this.getClass().to_string + "." + this.getMethode().to_string); } }
-> je suis dans Maclasse.MaMethode
Merci,
Harald Mouchobauer
JBB a exprimé avec précision :
Est il possible de trouver la methode dans la quelle je me trouve ? Pour une classe je fait MonObjet.getClass() ou MaClasse.class. Mais pour une méthode ? J'aimerais faire un truc du genre :
class MaClasse {
void MaMethode() { System.out.println("je suis dans " + this.getClass().to_string + "." + this.getMethode().to_string); } }
-> je suis dans Maclasse.MaMethode
Merci,
http://logging.apache.org/log4j/docs/index.html
-- DM
JBB a exprimé avec précision :
Est il possible de trouver la methode dans la quelle je me trouve ?
Pour une classe je fait MonObjet.getClass() ou MaClasse.class.
Mais pour une méthode ?
J'aimerais faire un truc du genre :
class MaClasse
{
void MaMethode()
{
System.out.println("je suis dans "
+ this.getClass().to_string
+ "."
+ this.getMethode().to_string);
}
}
Est il possible de trouver la methode dans la quelle je me trouve ? Pour une classe je fait MonObjet.getClass() ou MaClasse.class. Mais pour une méthode ? J'aimerais faire un truc du genre :
class MaClasse {
void MaMethode() { System.out.println("je suis dans " + this.getClass().to_string + "." + this.getMethode().to_string); } }
-> je suis dans Maclasse.MaMethode
Merci,
http://logging.apache.org/log4j/docs/index.html
-- DM
alexandre cartapanis
Est il possible de trouver la methode dans la quelle je me trouve ? Pour une classe je fait MonObjet.getClass() ou MaClasse.class. Mais pour une méthode ? J'aimerais faire un truc du genre :
class MaClasse {
void MaMethode() { System.out.println("je suis dans " + this.getClass().to_string + "." + this.getMethode().to_string); } }
-> je suis dans Maclasse.MaMethode
Merci,
Voici un code que j'ai ecrit, fortement inspiré de celui de log4j
/** * <p> * Infers the caller's class and method's name. * </p> * <p> * Returns an array of string where the first element is the caller's class name and the second element is the caller's method name. If the caller cannot be determined, the strings will be null. * </p> * @return <code>String[]</code> - An array of (possibly null) string. */ private String[] inferCaller() { String[] ret = new String[2]; ret[0] = null; ret[1] = null;
StackTraceElement stack[] = (new Throwable()).getStackTrace(); int i = 0; while (i < stack.length) { StackTraceElement frame = stack[i]; String cname = frame.getClassName(); if (cname.equals(this.getClass().getName())) { break; } i++; } while (i < stack.length) { StackTraceElement frame = stack[i]; String cname = frame.getClassName(); if (!cname.equals(this.getClass().getName())) { ret[0] = cname; ret[1] = frame.getMethodName(); return ret; } i++; } return ret; }
Il te renvoie un tableau de 2 string,le premier étant le nom de la classe et le second le nom de la méthode.
Comme cela a déjà été dit, cette méthode lance une exception po ur faire cela (new Throwable()).getStackTrace() ligne 5). J'ai fais un peu des tests de performance, la perte n'est pas énorme, mais c'est sur que ce n'est pas une méthode "légère". Essaye de ne pas t'en servir trop s ouvent... -- Alexandre CARTAPANIS - Responsable Système et Réseau Email Gsm. 06 72 07 51 55
Est il possible de trouver la methode dans la quelle je me trouve ?
Pour une classe je fait MonObjet.getClass() ou MaClasse.class.
Mais pour une méthode ?
J'aimerais faire un truc du genre :
class MaClasse
{
void MaMethode()
{
System.out.println("je suis dans "
+ this.getClass().to_string
+ "."
+ this.getMethode().to_string);
}
}
-> je suis dans Maclasse.MaMethode
Merci,
Voici un code que j'ai ecrit, fortement inspiré de celui de log4j
/**
* <p>
* Infers the caller's class and method's name.
* </p>
* <p>
* Returns an array of string where the first element is the caller's
class name and the second element is the caller's method name. If the
caller cannot be determined, the strings will be null.
* </p>
* @return <code>String[]</code> - An array of (possibly null) string.
*/
private String[] inferCaller() {
String[] ret = new String[2];
ret[0] = null;
ret[1] = null;
StackTraceElement stack[] = (new Throwable()).getStackTrace();
int i = 0;
while (i < stack.length) {
StackTraceElement frame = stack[i];
String cname = frame.getClassName();
if (cname.equals(this.getClass().getName())) {
break;
}
i++;
}
while (i < stack.length) {
StackTraceElement frame = stack[i];
String cname = frame.getClassName();
if (!cname.equals(this.getClass().getName())) {
ret[0] = cname;
ret[1] = frame.getMethodName();
return ret;
}
i++;
}
return ret;
}
Il te renvoie un tableau de 2 string,le premier étant le nom de la
classe et le second le nom de la méthode.
Comme cela a déjà été dit, cette méthode lance une exception po ur faire
cela (new Throwable()).getStackTrace() ligne 5). J'ai fais un peu des
tests de performance, la perte n'est pas énorme, mais c'est sur que ce
n'est pas une méthode "légère". Essaye de ne pas t'en servir trop s ouvent...
--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email alexandre.cartapanis@macymed.fr
Gsm. 06 72 07 51 55
Est il possible de trouver la methode dans la quelle je me trouve ? Pour une classe je fait MonObjet.getClass() ou MaClasse.class. Mais pour une méthode ? J'aimerais faire un truc du genre :
class MaClasse {
void MaMethode() { System.out.println("je suis dans " + this.getClass().to_string + "." + this.getMethode().to_string); } }
-> je suis dans Maclasse.MaMethode
Merci,
Voici un code que j'ai ecrit, fortement inspiré de celui de log4j
/** * <p> * Infers the caller's class and method's name. * </p> * <p> * Returns an array of string where the first element is the caller's class name and the second element is the caller's method name. If the caller cannot be determined, the strings will be null. * </p> * @return <code>String[]</code> - An array of (possibly null) string. */ private String[] inferCaller() { String[] ret = new String[2]; ret[0] = null; ret[1] = null;
StackTraceElement stack[] = (new Throwable()).getStackTrace(); int i = 0; while (i < stack.length) { StackTraceElement frame = stack[i]; String cname = frame.getClassName(); if (cname.equals(this.getClass().getName())) { break; } i++; } while (i < stack.length) { StackTraceElement frame = stack[i]; String cname = frame.getClassName(); if (!cname.equals(this.getClass().getName())) { ret[0] = cname; ret[1] = frame.getMethodName(); return ret; } i++; } return ret; }
Il te renvoie un tableau de 2 string,le premier étant le nom de la classe et le second le nom de la méthode.
Comme cela a déjà été dit, cette méthode lance une exception po ur faire cela (new Throwable()).getStackTrace() ligne 5). J'ai fais un peu des tests de performance, la perte n'est pas énorme, mais c'est sur que ce n'est pas une méthode "légère". Essaye de ne pas t'en servir trop s ouvent... -- Alexandre CARTAPANIS - Responsable Système et Réseau Email Gsm. 06 72 07 51 55