2010-11-08 47 views
0

Ce que je pense à quelque chose comme le mot-clé « ce » mais à un niveau de classe c.-à-Quels sont les problèmes ou les avantages associés à un mot clé "static this"?

class Example { 
    public static void main(String[] args) { 
     assert Example.class == thisclass.class 
    } 
} 

où « thisclass » est un mot-clé qui retourne la classe actuelle, tout comme « ce » renvoie l'instance en cours .

Je peux voir certains endroits où cela serait utile (par exemple, couper des erreurs de collage dans l'idiome commun de journalisation) mais je peux aussi voir quelques problèmes potentiels (comment gérer des sous-classes, etc.).

Je suppose qu'il y avait de bonnes raisons de ne pas inclure ce concept dans Java, mais que sont-ils? En outre, serait-il possible de faire ce genre de chose en utilisant Groovy meta programmation?

+4

La meilleure façon d'arrêter les erreurs de copier-coller est de ne pas copier et coller. –

+0

D'accord, mais il y a des cas où le copier-coller est approprié. Déclarer un enregistreur est l'un d'entre eux, mais je suppose que vous pourriez utiliser log4e ou similiar dans ce cas précis. –

Répondre

2

groovy a exactement la même sémantique dont vous parlez déjà. Dans un contexte statique, 'ceci' fait référence à la classe sur laquelle réside la méthode.

consultez http://groovy.codehaus.org/Differences+from+Java et recherchez 'ce mot clé'. Java n'a pas emboîté le pas à ce sujet, évidemment, probablement parce qu'à la fin c'est juste un petit morceau de saveur qui est «groovy». Certainement pas nécessaire d'aucune façon.

+0

La page des différences ne le rend pas trop évident, mais il est bon de savoir qu'il est déjà disponible. Je cherche à obtenir plus dans Groovy donc toute connaissance là-bas sera utile. –

+0

Java n'a pas "suivi" Groovy car le langage Java est antérieur à Groovy par ** plusieurs ** ans. –

+0

@stephen, bien sûr, mais Java est toujours en évolution a été mon point de vue. – hvgotcodes

0

Il y avait une habitude en C++ de typedeffing la classe actuelle à This. Je l'ai essayé, je n'ai pas vraiment trouvé d'avantage surprenant.