2009-10-09 7 views
0

L'utilisation canonique pour ReflectionToStringBuilder est comme suitComment puis-je étendre ReflectionToStringBuilder pour éviter la duplication?

public String toString() { 
    return (new ReflectionToStringBuilder(this) { 
     protected boolean accept(Field f) { 
      return super.accept(f) && !f.getName().equals("password"); 
     } 
    }).toString(); 
} 

Est-il possible de ne pas répéter en quelque sorte si elle doit être fait à plusieurs reprises. Je le pense vraiment mais peut-être que quelqu'un de plus avancé que moi pourrait avoir une suggestion. Ce que je veux vraiment faire, c'est ajouter une méthode.

Répondre

4
class NonPasswordShowingStringBuilder extends ReflectionToStringBuilder 
{ 
    protected boolean accept(Field f) { 
     return super.accept(f) && !f.getName().equals("password"); 
    } 

    public NonPasswordShowingStringBuilder(Object o) { super(o); } 
} 

sauf s'il me manque quelque chose.

1

Une autre approche, utile s'il y a d'autres paramètres à transmettre à votre code est de mettre la classe interne anonyme dans une méthode:

public static ReflectionToStringBuilder toStringBuilder(Object obj) { 
    return new ReflectionToStringBuilder(obj) { 
     @Override protected boolean accept(Field f) { 
      return super.accept(f) && !f.getName().equals("password"); 
     } 
    }; 
} 
Questions connexes