J'arrive à récupérer la classe courante: this.toString() mais je ne
trouve pas le moyen de connaître la méthode courante.
J'arrive à récupérer la classe courante: this.toString() mais je ne
trouve pas le moyen de connaître la méthode courante.
J'arrive à récupérer la classe courante: this.toString() mais je ne
trouve pas le moyen de connaître la méthode courante.
J'arrive à récupérer la classe courante: this.toString() mais je ne
trouve pas le moyen de connaître la méthode courante.
Voici un point de départ:
String stackTrace = new Exception().getStackTrace();
Ensuite, concasser la chaîne avec une grosse expression régulière.
Pardonne-moi d'être curieux: à quoi ça va te servir ?
Laurent
http://bossavit.com/
http://bossavit.com/thoughts/
J'arrive à récupérer la classe courante: this.toString() mais je ne
trouve pas le moyen de connaître la méthode courante.
Voici un point de départ:
String stackTrace = new Exception().getStackTrace();
Ensuite, concasser la chaîne avec une grosse expression régulière.
Pardonne-moi d'être curieux: à quoi ça va te servir ?
Laurent
http://bossavit.com/
http://bossavit.com/thoughts/
J'arrive à récupérer la classe courante: this.toString() mais je ne
trouve pas le moyen de connaître la méthode courante.
Voici un point de départ:
String stackTrace = new Exception().getStackTrace();
Ensuite, concasser la chaîne avec une grosse expression régulière.
Pardonne-moi d'être curieux: à quoi ça va te servir ?
Laurent
http://bossavit.com/
http://bossavit.com/thoughts/
C pour les messages de log de mon appli. Je voulais pas écrire en dure
le nom de la méthode qui envoie le message car ca peut changer dans le
temps.
Voilà donc la méthode à appeler sous la forme: getCurrentMethod(new
Exception())
private String getCurrentMethod(Exception e)
{
String methodStr = e.getStackTrace()[0].toString();
methodStr = methodStr.substring(0,methodStr.indexOf('('));
return methodStr;
}
Tu devrais sans doute garder les paramètres de la méthode, car sans eux,
Autre question u peu particulière:
----------------------------------
Soit le code suivant (pas fini mais suffisant pour exposer ma
question):
class Scheduler
{
Vector vector;
Log log;
int i;
Scheduler(Log log)
{
this.log = log;
log.add("Scheduler instanciated");
vector = new Vector();
}
//--- ajoute une classe à instancier toutes les
// X millisecondes.
public void add(String classStr, long frequency)
{
vector.add(classStr);
vector.add(frequency);
}
public go()
{
for(i=0;i<vector.size();i=i+2)
{
Class.forName(
((String)vector.get(i))).newInstance();
}
}
}
Question: Comment faire pour passer de manière transparente à la
méthode add les paramètres qui seront à donner à la classe qui sera à
instancier?
Merci d'avance.
C pour les messages de log de mon appli. Je voulais pas écrire en dure
le nom de la méthode qui envoie le message car ca peut changer dans le
temps.
Voilà donc la méthode à appeler sous la forme: getCurrentMethod(new
Exception())
private String getCurrentMethod(Exception e)
{
String methodStr = e.getStackTrace()[0].toString();
methodStr = methodStr.substring(0,methodStr.indexOf('('));
return methodStr;
}
Tu devrais sans doute garder les paramètres de la méthode, car sans eux,
Autre question u peu particulière:
----------------------------------
Soit le code suivant (pas fini mais suffisant pour exposer ma
question):
class Scheduler
{
Vector vector;
Log log;
int i;
Scheduler(Log log)
{
this.log = log;
log.add("Scheduler instanciated");
vector = new Vector();
}
//--- ajoute une classe à instancier toutes les
// X millisecondes.
public void add(String classStr, long frequency)
{
vector.add(classStr);
vector.add(frequency);
}
public go()
{
for(i=0;i<vector.size();i=i+2)
{
Class.forName(
((String)vector.get(i))).newInstance();
}
}
}
Question: Comment faire pour passer de manière transparente à la
méthode add les paramètres qui seront à donner à la classe qui sera à
instancier?
Merci d'avance.
C pour les messages de log de mon appli. Je voulais pas écrire en dure
le nom de la méthode qui envoie le message car ca peut changer dans le
temps.
Voilà donc la méthode à appeler sous la forme: getCurrentMethod(new
Exception())
private String getCurrentMethod(Exception e)
{
String methodStr = e.getStackTrace()[0].toString();
methodStr = methodStr.substring(0,methodStr.indexOf('('));
return methodStr;
}
Tu devrais sans doute garder les paramètres de la méthode, car sans eux,
Autre question u peu particulière:
----------------------------------
Soit le code suivant (pas fini mais suffisant pour exposer ma
question):
class Scheduler
{
Vector vector;
Log log;
int i;
Scheduler(Log log)
{
this.log = log;
log.add("Scheduler instanciated");
vector = new Vector();
}
//--- ajoute une classe à instancier toutes les
// X millisecondes.
public void add(String classStr, long frequency)
{
vector.add(classStr);
vector.add(frequency);
}
public go()
{
for(i=0;i<vector.size();i=i+2)
{
Class.forName(
((String)vector.get(i))).newInstance();
}
}
}
Question: Comment faire pour passer de manière transparente à la
méthode add les paramètres qui seront à donner à la classe qui sera à
instancier?
Merci d'avance.
Ouch ! tu utilises des Vector ? Et tu n'as pas mal ? Depuis Java2, il
convient de les remplacer, autant que possible, par des collections
diverses. Consultes le poackage java.util pour y trouver la plus
adaptée.
Ouch ! tu utilises des Vector ? Et tu n'as pas mal ? Depuis Java2, il
convient de les remplacer, autant que possible, par des collections
diverses. Consultes le poackage java.util pour y trouver la plus
adaptée.
Ouch ! tu utilises des Vector ? Et tu n'as pas mal ? Depuis Java2, il
convient de les remplacer, autant que possible, par des collections
diverses. Consultes le poackage java.util pour y trouver la plus
adaptée.
Bonjour,
Où avez-vous eu cette information ? (C'est une vraie question, pas une
contradiction. :-))
En lisant la page
<http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html>, je ne
vois rien de conseillé en ce sens (au contraire, Vector paraît avoir été
réécrite) et la classe ne me semble même pas marquée "deprecated"...
Merci.
[CITATION ALÉATOIRE : Le manque d'argent aidant, je ne dépense
rien. Maurice Roche]
Bonjour,
Où avez-vous eu cette information ? (C'est une vraie question, pas une
contradiction. :-))
En lisant la page
<http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html>, je ne
vois rien de conseillé en ce sens (au contraire, Vector paraît avoir été
réécrite) et la classe ne me semble même pas marquée "deprecated"...
Merci.
[CITATION ALÉATOIRE : Le manque d'argent aidant, je ne dépense
rien. Maurice Roche]
Bonjour,
Où avez-vous eu cette information ? (C'est une vraie question, pas une
contradiction. :-))
En lisant la page
<http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html>, je ne
vois rien de conseillé en ce sens (au contraire, Vector paraît avoir été
réécrite) et la classe ne me semble même pas marquée "deprecated"...
Merci.
[CITATION ALÉATOIRE : Le manque d'argent aidant, je ne dépense
rien. Maurice Roche]
Bonjour,Ouch ! tu utilises des Vector ? Et tu n'as pas mal ? Depuis Java2, il
convient de les remplacer, autant que possible, par des collections
diverses. Consultes le poackage java.util pour y trouver la plus
adaptée.
Où avez-vous eu cette information ? (C'est une vraie question, pas une
contradiction. :-))
En lisant la page
<http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html>, je ne
vois rien de conseillé en ce sens (au contraire, Vector paraît avoir été
réécrite) et la classe ne me semble même pas marquée "deprecated"...
Bonjour,
Ouch ! tu utilises des Vector ? Et tu n'as pas mal ? Depuis Java2, il
convient de les remplacer, autant que possible, par des collections
diverses. Consultes le poackage java.util pour y trouver la plus
adaptée.
Où avez-vous eu cette information ? (C'est une vraie question, pas une
contradiction. :-))
En lisant la page
<http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html>, je ne
vois rien de conseillé en ce sens (au contraire, Vector paraît avoir été
réécrite) et la classe ne me semble même pas marquée "deprecated"...
Bonjour,Ouch ! tu utilises des Vector ? Et tu n'as pas mal ? Depuis Java2, il
convient de les remplacer, autant que possible, par des collections
diverses. Consultes le poackage java.util pour y trouver la plus
adaptée.
Où avez-vous eu cette information ? (C'est une vraie question, pas une
contradiction. :-))
En lisant la page
<http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html>, je ne
vois rien de conseillé en ce sens (au contraire, Vector paraît avoir été
réécrite) et la classe ne me semble même pas marquée "deprecated"...
Laurent Bossavit wrote:J'arrive à récupérer la classe courante: this.toString() mais je ne
trouve pas le moyen de connaître la méthode courante.
Voici un point de départ:
String stackTrace = new Exception().getStackTrace();
Ensuite, concasser la chaîne avec une grosse expression régulière.
Pardonne-moi d'être curieux: à quoi ça va te servir ?
Laurent
http://bossavit.com/
http://bossavit.com/thoughts/
C pour les messages de log de mon appli. Je voulais pas écrire en dure
le nom de la méthode qui envoie le message car ca peut changer dans le
temps.
Voilà donc la méthode à appeler sous la forme: getCurrentMethod(new
Exception())
private String getCurrentMethod(Exception e)
{
String methodStr = e.getStackTrace()[0].toString();
methodStr = methodStr.substring(0,methodStr.indexOf('('));
return methodStr;
}
Autre question u peu particulière:
----------------------------------
Soit le code suivant (pas fini mais suffisant pour exposer ma question):
class Scheduler
{
Vector vector;
Log log;
int i;
Scheduler(Log log)
{
this.log = log;
log.add("Scheduler instanciated");
vector = new Vector();
}
//--- ajoute une classe à instancier toutes les
// X millisecondes.
public void add(String classStr, long frequency)
{
vector.add(classStr);
vector.add(frequency);
}
public go()
{
for(i=0;i<vector.size();i=i+2)
{
Class.forName( ((String)vector.get(i))).newInstance();
}
}
}
Question: Comment faire pour passer de manière transparente à la méthode
add les paramètres qui seront à donner à la classe qui sera à instancier?
Je ne sais pas ce que tu veux faire mais ça à l'air louche... :-)
Laurent Bossavit wrote:
J'arrive à récupérer la classe courante: this.toString() mais je ne
trouve pas le moyen de connaître la méthode courante.
Voici un point de départ:
String stackTrace = new Exception().getStackTrace();
Ensuite, concasser la chaîne avec une grosse expression régulière.
Pardonne-moi d'être curieux: à quoi ça va te servir ?
Laurent
http://bossavit.com/
http://bossavit.com/thoughts/
C pour les messages de log de mon appli. Je voulais pas écrire en dure
le nom de la méthode qui envoie le message car ca peut changer dans le
temps.
Voilà donc la méthode à appeler sous la forme: getCurrentMethod(new
Exception())
private String getCurrentMethod(Exception e)
{
String methodStr = e.getStackTrace()[0].toString();
methodStr = methodStr.substring(0,methodStr.indexOf('('));
return methodStr;
}
Autre question u peu particulière:
----------------------------------
Soit le code suivant (pas fini mais suffisant pour exposer ma question):
class Scheduler
{
Vector vector;
Log log;
int i;
Scheduler(Log log)
{
this.log = log;
log.add("Scheduler instanciated");
vector = new Vector();
}
//--- ajoute une classe à instancier toutes les
// X millisecondes.
public void add(String classStr, long frequency)
{
vector.add(classStr);
vector.add(frequency);
}
public go()
{
for(i=0;i<vector.size();i=i+2)
{
Class.forName( ((String)vector.get(i))).newInstance();
}
}
}
Question: Comment faire pour passer de manière transparente à la méthode
add les paramètres qui seront à donner à la classe qui sera à instancier?
Je ne sais pas ce que tu veux faire mais ça à l'air louche... :-)
Laurent Bossavit wrote:J'arrive à récupérer la classe courante: this.toString() mais je ne
trouve pas le moyen de connaître la méthode courante.
Voici un point de départ:
String stackTrace = new Exception().getStackTrace();
Ensuite, concasser la chaîne avec une grosse expression régulière.
Pardonne-moi d'être curieux: à quoi ça va te servir ?
Laurent
http://bossavit.com/
http://bossavit.com/thoughts/
C pour les messages de log de mon appli. Je voulais pas écrire en dure
le nom de la méthode qui envoie le message car ca peut changer dans le
temps.
Voilà donc la méthode à appeler sous la forme: getCurrentMethod(new
Exception())
private String getCurrentMethod(Exception e)
{
String methodStr = e.getStackTrace()[0].toString();
methodStr = methodStr.substring(0,methodStr.indexOf('('));
return methodStr;
}
Autre question u peu particulière:
----------------------------------
Soit le code suivant (pas fini mais suffisant pour exposer ma question):
class Scheduler
{
Vector vector;
Log log;
int i;
Scheduler(Log log)
{
this.log = log;
log.add("Scheduler instanciated");
vector = new Vector();
}
//--- ajoute une classe à instancier toutes les
// X millisecondes.
public void add(String classStr, long frequency)
{
vector.add(classStr);
vector.add(frequency);
}
public go()
{
for(i=0;i<vector.size();i=i+2)
{
Class.forName( ((String)vector.get(i))).newInstance();
}
}
}
Question: Comment faire pour passer de manière transparente à la méthode
add les paramètres qui seront à donner à la classe qui sera à instancier?
Je ne sais pas ce que tu veux faire mais ça à l'air louche... :-)
En passant...
private String getCurrentMethod()
{
Exception e = new Exception();
methodStr = e.getStackTrace()[1].toString();
methodStr = methodStr.substring(0,methodStr.indexOf('('));
return methodStr;
}
En passant...
private String getCurrentMethod()
{
Exception e = new Exception();
methodStr = e.getStackTrace()[1].toString();
methodStr = methodStr.substring(0,methodStr.indexOf('('));
return methodStr;
}
En passant...
private String getCurrentMethod()
{
Exception e = new Exception();
methodStr = e.getStackTrace()[1].toString();
methodStr = methodStr.substring(0,methodStr.indexOf('('));
return methodStr;
}
Et je voudrais que le Scheduler (le plannificateur des tâches) ait une
seule méthode d'ajout de classes (avec passage de paramètres!!!) et pas
une méthode pour chaque type de classe à ajouter.
Et je voudrais que le Scheduler (le plannificateur des tâches) ait une
seule méthode d'ajout de classes (avec passage de paramètres!!!) et pas
une méthode pour chaque type de classe à ajouter.
Et je voudrais que le Scheduler (le plannificateur des tâches) ait une
seule méthode d'ajout de classes (avec passage de paramètres!!!) et pas
une méthode pour chaque type de classe à ajouter.
Le 13.01 2004, hervé dubuis s'est levé et s'est dit : "tiens, si
j'écrivais aux mecs de fr.comp.lang.java ?"
C pour les messages de log de mon appli. Je voulais pas écrire en dure
le nom de la méthode qui envoie le message car ca peut changer dans le
temps.
Avec log4j, tu fais ça facilement à grand coups de logger.info("mon
message", new Exception()) qui t'imprime non seulement la méthode
courante, mais aussi la pile d'appel qui t'y a mené.
Voilà donc la méthode à appeler sous la forme: getCurrentMethod(new
Exception())
private String getCurrentMethod(Exception e)
{
String methodStr = e.getStackTrace()[0].toString();
methodStr = methodStr.substring(0,methodStr.indexOf('('));
return methodStr;
}
Tu devrais sans doute garder les paramètres de la méthode, car sans eux,
tu seras bien embêté pour les redéfinitions.
Autre question u peu particulière:
----------------------------------
Soit le code suivant (pas fini mais suffisant pour exposer ma
question):
class Scheduler
{
Vector vector;
Log log;
int i;
Scheduler(Log log)
{
this.log = log;
log.add("Scheduler instanciated");
vector = new Vector();
}
Ouch ! tu utilises des Vector ? Et tu n'as pas mal ? Depuis Java2, il
convient de les remplacer, autant que possible, par des collections
diverses. Consultes le poackage java.util pour y trouver la plus
adaptée.
//--- ajoute une classe à instancier toutes les
// X millisecondes.
public void add(String classStr, long frequency)
{
vector.add(classStr);
vector.add(frequency);
}
public go()
{
for(i=0;i<vector.size();i=i+2)
{
Class.forName(
((String)vector.get(i))).newInstance();
}
}
}
Question: Comment faire pour passer de manière transparente à la
méthode add les paramètres qui seront à donner à la classe qui sera à
instancier?
Tu passes à un tableau d'Object, et, grâce au package java.lang.reflect,
dont je t'invite à consulter la doc, tu pourras choisir dynamiquement le
constructeur à invoquer. Méfiance toutefois : ce genre de code est
excessivement dangereux. Je suis bien curieux de savoir à quoi ça va te
servir ...
Merci d'avance.
--
Nicolas Delsaux
"On a tous entendu qu'un million de singes tapant sur un million de
claviers pourraient produire les oeuvres complètes de Shakespeare.
Maintenant, grâce à Internet, on sait que ça n'est pas vrai." Robert
Wilensky
Le 13.01 2004, hervé dubuis s'est levé et s'est dit : "tiens, si
j'écrivais aux mecs de fr.comp.lang.java ?"
C pour les messages de log de mon appli. Je voulais pas écrire en dure
le nom de la méthode qui envoie le message car ca peut changer dans le
temps.
Avec log4j, tu fais ça facilement à grand coups de logger.info("mon
message", new Exception()) qui t'imprime non seulement la méthode
courante, mais aussi la pile d'appel qui t'y a mené.
Voilà donc la méthode à appeler sous la forme: getCurrentMethod(new
Exception())
private String getCurrentMethod(Exception e)
{
String methodStr = e.getStackTrace()[0].toString();
methodStr = methodStr.substring(0,methodStr.indexOf('('));
return methodStr;
}
Tu devrais sans doute garder les paramètres de la méthode, car sans eux,
tu seras bien embêté pour les redéfinitions.
Autre question u peu particulière:
----------------------------------
Soit le code suivant (pas fini mais suffisant pour exposer ma
question):
class Scheduler
{
Vector vector;
Log log;
int i;
Scheduler(Log log)
{
this.log = log;
log.add("Scheduler instanciated");
vector = new Vector();
}
Ouch ! tu utilises des Vector ? Et tu n'as pas mal ? Depuis Java2, il
convient de les remplacer, autant que possible, par des collections
diverses. Consultes le poackage java.util pour y trouver la plus
adaptée.
//--- ajoute une classe à instancier toutes les
// X millisecondes.
public void add(String classStr, long frequency)
{
vector.add(classStr);
vector.add(frequency);
}
public go()
{
for(i=0;i<vector.size();i=i+2)
{
Class.forName(
((String)vector.get(i))).newInstance();
}
}
}
Question: Comment faire pour passer de manière transparente à la
méthode add les paramètres qui seront à donner à la classe qui sera à
instancier?
Tu passes à un tableau d'Object, et, grâce au package java.lang.reflect,
dont je t'invite à consulter la doc, tu pourras choisir dynamiquement le
constructeur à invoquer. Méfiance toutefois : ce genre de code est
excessivement dangereux. Je suis bien curieux de savoir à quoi ça va te
servir ...
Merci d'avance.
--
Nicolas Delsaux
"On a tous entendu qu'un million de singes tapant sur un million de
claviers pourraient produire les oeuvres complètes de Shakespeare.
Maintenant, grâce à Internet, on sait que ça n'est pas vrai." Robert
Wilensky
Le 13.01 2004, hervé dubuis s'est levé et s'est dit : "tiens, si
j'écrivais aux mecs de fr.comp.lang.java ?"
C pour les messages de log de mon appli. Je voulais pas écrire en dure
le nom de la méthode qui envoie le message car ca peut changer dans le
temps.
Avec log4j, tu fais ça facilement à grand coups de logger.info("mon
message", new Exception()) qui t'imprime non seulement la méthode
courante, mais aussi la pile d'appel qui t'y a mené.
Voilà donc la méthode à appeler sous la forme: getCurrentMethod(new
Exception())
private String getCurrentMethod(Exception e)
{
String methodStr = e.getStackTrace()[0].toString();
methodStr = methodStr.substring(0,methodStr.indexOf('('));
return methodStr;
}
Tu devrais sans doute garder les paramètres de la méthode, car sans eux,
tu seras bien embêté pour les redéfinitions.
Autre question u peu particulière:
----------------------------------
Soit le code suivant (pas fini mais suffisant pour exposer ma
question):
class Scheduler
{
Vector vector;
Log log;
int i;
Scheduler(Log log)
{
this.log = log;
log.add("Scheduler instanciated");
vector = new Vector();
}
Ouch ! tu utilises des Vector ? Et tu n'as pas mal ? Depuis Java2, il
convient de les remplacer, autant que possible, par des collections
diverses. Consultes le poackage java.util pour y trouver la plus
adaptée.
//--- ajoute une classe à instancier toutes les
// X millisecondes.
public void add(String classStr, long frequency)
{
vector.add(classStr);
vector.add(frequency);
}
public go()
{
for(i=0;i<vector.size();i=i+2)
{
Class.forName(
((String)vector.get(i))).newInstance();
}
}
}
Question: Comment faire pour passer de manière transparente à la
méthode add les paramètres qui seront à donner à la classe qui sera à
instancier?
Tu passes à un tableau d'Object, et, grâce au package java.lang.reflect,
dont je t'invite à consulter la doc, tu pourras choisir dynamiquement le
constructeur à invoquer. Méfiance toutefois : ce genre de code est
excessivement dangereux. Je suis bien curieux de savoir à quoi ça va te
servir ...
Merci d'avance.
--
Nicolas Delsaux
"On a tous entendu qu'un million de singes tapant sur un million de
claviers pourraient produire les oeuvres complètes de Shakespeare.
Maintenant, grâce à Internet, on sait que ça n'est pas vrai." Robert
Wilensky