Following this "bad idea" we should agree that smalltalk metaclass system is horrible and class should be just a language artifact

28 �������� 2016 ��. 11:45 ������������������������ "Jan Vrany" <jan.vrany@fit.cvut.cz> ��������������:


On Mon, Jun 27, 2016 at 1:09 PM, Nicolas Passerini <npasserini@gmail.com> wrote:


On Mon, Jun 27, 2016 at 1:44 PM, Denis Kudriashov <dionisiydk@gmail.com> wrote:

2016-06-27 13:28 GMT+02:00 Nicolas Passerini <npasserini@gmail.com>:
That is not quite true, annotations are (kind of) objects but you can not put behavior in them, just define attributes and optionally default values for those attributes.

Ah, you are right. I remember many restrictions was applied to them which always forced me to hate Java :)

Yep.

Well, there's a reason why they're restricted. Note, that the restriction is on language level, not at runtime level. A annotation class
with arbitrary code would pass JVM verification (or at least I can't see a rule that would reject such a class).��

When I implemented annotation support I was initially thinking the same - let's create an instance of CoolAnnotationClass when the code is accepted
and then one can add arbitrary code to his CoolAnnotationClass. I quickly realized this is a (very) bad idea. Or, to be precise, it is a bad idea given the��
environment. So I'd be very careful..

Jan

P.S.: As for "which always forced me to hate Java": I found myself a very enlightening to think carefully about why somebody else
do things differently before I start to hate her/him. Besides, there's whole lot of things that Java guys got right...