Slu
est il possible de distinguer dans une fonction si elle a etait appele a partir d une autre fonction de la classe ou en dehors de la classe ???
thx @+
Version imprimable
Slu
est il possible de distinguer dans une fonction si elle a etait appele a partir d une autre fonction de la classe ou en dehors de la classe ???
thx @+
Quel est ton objectif ?
cf mon post ...
j aimerais faire une distinction de code entre les deux procedure ... sans etre oblige de mettre un tag
C'est une drole d'idee mais c'est possible en rusant un peu. Utilise ca :
Exemple d'utilisation :Code:
1
2
3
4
5
6
7
8
9 public static boolean externalCall(Class<?> klass) { StackTraceElement[] stack = Thread.currentThread().getStackTrace(); if (stack.length > 4) { return !(stack[4].getClassName().equals(klass.getName())); } return false; }
Tu verras affiche internal puis external. Note que recuperer le stacktrace est tres couteux et affecte les performances. Ensuite c'est une tres mauvaise idee de coder ainsi :)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 class A { public static void test() { if (externalCall(test.class)) { System.out.println("external"); } else { System.out.println("internal"); } } public static void main(String... args) { test(); B b = new B(); b.test(); } class B { void test() { A.test(); } } }
ok....je ne voyais pas cela aussi complique ... merci !
C'est pas complique, c'est simplement tres sale.
:D :wink:Citation:
Envoyé par Gfx
Pourquoi ne pas faire deux methodes différentes, une privée et une publique? :roll:
oui ... 2 methodes qui font pratiquement la meme chose .... :?Citation:
Envoyé par viena