The OutlookExpress wrapped the souce, so I posted the code to

http://www.intellij.org/twiki/bin/view/Main/LiveTemplateContribs

feel free to modify it on the wiki

"dimiter" <[EMAIL PROTECTED]> wrote in message
adfdql$um6$[EMAIL PROTECTED]">news:adfdql$um6$[EMAIL PROTECTED]...
> Here you are:
>
>
>     public String toString() {
>         try {
>             StringBuffer sb = new StringBuffer(super.toString());
>             Field[] fields = this.getClass().getDeclaredFields();
>             for (int i = 0; i < fields.length; i++) {
>                 sb.append("
>
").append(fields[i].getName()).append("=").append(fields[i].get(this)).appen
> d(";");
>             }
>             return sb.toString();
>         } catch (Exception e) {
>             throw new RuntimeException(e.toString());
>         }
>     }
>
>     public boolean equals(Object obj) {
>         if (!super.equals(obj)) return false;
>         if (!this.getClass().isAssignableFrom(obj.getClass())) return
false;
>         try {
>             Field[] fields = this.getClass().getDeclaredFields();
>             for (int i = 0; i < fields.length; i++) {
>                 Field field = fields[i];
>                 if (field.get(this).equals(field.get(obj))) return false;
>             }
>             return true;
>         } catch (Exception e) {
>             throw new RuntimeException(e.toString());
>         }
>     }
>
>     public int hashCode() {
>         try {
>             int c = super.hashCode();
>             Field[] fields = this.getClass().getDeclaredFields();
>             for (int i = 0; i < fields.length; i++) {
>                 c = c*37 + fields[i].get(this).hashCode();
>             }
>             return c;
>         } catch (Exception e) {
>             throw new RuntimeException(e.toString());
>         }
>     }
>
> Insert this code snippet in your object and you get "canonical" behavior.
>
> Note that the equals method is not reflexive if used with polymorphic
> classes (Joshua Bloch mentioned that in his book)
> Feel free to comment :)
>
> -- dimiter
>
> "Alain Ravet" <[EMAIL PROTECTED]> wrote in message
> [EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> >       dimiter wrote:
> >
> >    > At least for me these generated methods don't add any value.
> >
> >
> > Ever written this code for 5 15+ field classes, that map objects to DB
> > data? Pretty boring, and error prone.
> >
> >
> >    > If I want equals I prefer to write it myself and to determine
> precisely
> >    > which variables define the state of my class,
> >
> >
> > So do I; but I start from a complete and functionning skeleton, that I
> > tune if necessary.
> > Less error prone. Helps me be consistent, across classes.
> > The "template" side is an extra advantage for team consistency.
> >
> >
> >    > if I write toString - I want
> >    > to see concise description and not full memory dump (that's what
the
> >    > debugger is for).
> >
> >
> > So do I; but ...
> >
> >
> >    > But if you feel more comfortable with standard implementations,
> >
> >
> > I use Joshua Bloch - "Effective Java" - /standard/.
> >
> >
>
http://www.amazon.co.uk/exec/obidos/ASIN/0201310058/qid=1023090468/sr=2-1/re
> f=sr_2_3_1/026-2098539-4510843
> > A good enough standard to start with.
> >
> >
> >     > you could
> >
> >    > use the generic versions and rewrite them yourself if the profiling
> shows
> >    > them as bottlenecks (I've seen this very rarely).
> >
> >
> > Having this task automated helps a lot.
> > No more "do I really need to spend 5-20 minutes making this object
> > canonical, when all I need is a basic toString().
> >
> >
> > Having this task integrated would help even more : modifiying the class
> > structure would trigger change/notification. It's not top priority, but
> > like many IDEA cool "little" features, they quickly become invaluable.
> >
> >     > so from me it gets -1
> >
> >
> > Does "-1" mean that
> >     - you would write a plug-in to remove it from the standard menus,
> >       to save space,
> >
> > or simply that you think that
> >     - you would never use it
> > ?
> >
> > Alain
> >
> > ------------------------------------
> >
> >  >>Martin Bayly wrote:
> >  >>>I find it tedious to write equals, hashcode and toString methods for
> >  >>>classes.  It would be great if IDEA could do this for me by examing
> >  >>>the fields of a class and generating/maintaining a default
> >  >>>implementation of these methods.
> >
> >
> > > Alain Ravet wrote:
> > >>+5
> > >>This is an old request - and battle - : make objects canonical.
> > >>In the meantime, I solved this with a doclet. Not perfect, but good
> > > enough.
> > >>Integration would be better, though.
> >
> >
>
>


_______________________________________________
Eap-features mailing list
[EMAIL PROTECTED]
http://lists.jetbrains.com/mailman/listinfo/eap-features

Reply via email to