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 @+
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 @+
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Pourquoi ne pas faire deux methodes différentes, une privée et une publique?
oui ... 2 methodes qui font pratiquement la meme chose ....Envoyé par viena
Partager