Clazz, or whatever, should provide MetaClass facilities. That is, it should be 
for creating, manipulating, etc Class instances. And, in java, an instance of 
java.lang.Class is a class. So j.l.Class is a type of MetaClass. 

But that shouldn't open the door for naming everything else Meta. 

A property that applies to an instance of Clazz isn't a meta property, it's a 
class property. These are frequently called attributes, to distinguish them 
from properties, which apply to, and vary with, instances. If we use 
Attribute as the name of class properties, we need something to use for 
Property, in order not to conflict with ...  nothing. There isn't a class 
j.l.Property. So Property is a decent name for describing object, as opposed 
to class, properties. 

Field, on the other hand, usually means an actual slot in the object. A field 
is never implemented virtually, the way a property might be. So Complex might 
have fields real and imaginary, but properties real, imaginary, radius and 
theta. [With radius and theta being read only. Don't make properties have 
side-effects] 

"Instance", which allows introspection and description of a particular object, 
tightening the interface of it's properties, is another metaclass. It 
describes a class of objects, of which the instance at hand is a member. It 
tightens the description of the properties to exact class of the instance's 
property. 

I'd be very wary of trying to work with methods at this level, since the only 
way to work with it would be to call it, which is likely to be disasterous, 
unless you have some knowledge the the method is idempotent. Like a getter. 
By this argument, Operation is only at the class level. This conflicts with 
the deprecated java.rmi.server.Operation, but that shouldn't bother anyone.

So my list is
Class side
Clazz  - describes and models Classes

Attribute - class level properties. e.g. this class requires an ObjectPool. I 
think Berin's examples have shown a couple different styles. Some attach to 
the class as a whole, while some attach to Operation. 

Property - model of instance data, which might be indirected through methods 
and have no real backing

Operation - model of the methods of a class. What's the signature, build a 
proxy for it, etc.

Instance - this might be a Clazz? It's the detailed, narrowed, introspection 
of an instance. 

Delegate - a bound method reference - ties an Operation to an object. Take 
Avalon's implementation.


On Tuesday 29 October 2002 09:58 am, [EMAIL PROTECTED] wrote:
> >  from:    Victor Volle <[EMAIL PROTECTED]>
> > Do we need Clazz at all?
> > What is the difference between Clazz (Bean) and MetaClass?
> > What is Clazz (Bean) responsible for?
>
> In the JDK the parallel is Class vs Object. In [beanutils] the parallel is
> DynaClass vs DynaBean. Its the instantiated object. Thus Class or Clazz is
> a bad name for it. Object, Instance or Bean are better names.
>
> > Summary:
> > ============================
> > MetaClass, MetaField, MetaOperation
> > ???           Field,        Operation
> > Attribute
> > ============================
>
> Problem with Field is that it is the same as reflection. I really want to
> avoid that as it will make the API much more complex to use (needing to
> qualify class names)
>
> Stephen


--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>

Reply via email to