J'ai ceci dans mon code
Thread.currentThread().sleep(x);
Eclipse me dit d'utiliser le statique
Thread.sleep(x);
au lieu de cela pourquoi? Quelle est la différence, y a-t-il une différence de fonctionnalité entre ces deux méthodes?
J'ai ceci dans mon code
Thread.currentThread().sleep(x);
Eclipse me dit d'utiliser le statique
Thread.sleep(x);
au lieu de cela pourquoi? Quelle est la différence, y a-t-il une différence de fonctionnalité entre ces deux méthodes?
Il n'y a qu'une méthode, pas deux, et c'est statique. Bien que vous puissiez appeler une méthode statique via une référence d'instance, ce n'est pas un bon style. Cela indique que le programmeur pense qu'il appelle une méthode d'instance. Un programmeur confus pense peut-être qu'il peut faire dormir un autre thread (pas celui en cours) de cette façon, alors que ce n'est pas le cas.
Vos deux lignes de code font la même chose, mais la seconde est un meilleur style.
En Java, le sommeil est une méthode statique. Les deux exemples pour faire exactement la même chose, mais la première version est source de confusion car il semble que c'est l'appel d'une méthode sur un objet spécifique, mais elle ne fait pas ça du tout. Dans votre exemple, il ne sera pas beaucoup d'importance, mais il est plus dangereux si vous disposez des éléments suivants:
someOtherThread.sleep(x);
Cette fois, il semble que vous dites à un autre thread pour dormir, mais en fait, vous êtes de mettre le thread en cours du sommeil. Le moyen d'éviter de faire ce type d'erreur est de toujours faire appel à des méthodes statiques à l'aide de la classe plutôt qu'à un objet spécifique.
Les deux appels de méthode sont identiques dans le comportement, car elles font appel à la même méthode, mais en utilisant le nom de la classe (Thread dans ce cas) plutôt que par exemple pour accéder à des champs statiques et méthodes qui rend cette statique-ness clair. C'est pourquoi cet avertissement est produit.
Mais considérant que les champs statiques et méthodes sont présentées d'une manière particulière dans la plupart des IDEs (par exemple en italique dans Eclipse et IntelliJ IDEA), est-ce un avertissement-elle encore nécessaire? Peut-être pas autant nécessaire qu'il était dans les premiers jours de Java que de simples éditeurs étaient en cours d'utilisation.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.