Est une auto-référence à un objet de la preuve de la mauvaise conception de code

Je suis tombé sur un auto de référence dans le code que je regardais.

Exemple

TestObject selfReference = this;

Est-il jamais une bonne affaire dans laquelle vous avez besoin d'une auto-référence à un objet? Est-ce le signe d'un mauvais codage du design ou de style?

EDIT:

C'est un exemple de cas où si j'utilise this il lèvera une erreur, mais lors de l'utilisation de selfReference, il compile.


public class IFrame extends InternalFrame
{
    public IFrame()
    {
         addComponentListener(new java.awt.event.ComponentAdapter()
        {
            public void componentResized(java.awt.event.ComponentEvent evt) 
            {
                Window.setCurrComponent(this); //compile error
            }
            public void componentMoved(ComponentEvent evt)
            {
                Window.setCurrComponent(selfReference); //compiles correctly
            }
        });
    }
}

public class InternalFrame extends JInternalFrame
{
    protected InternalFrame selfReference = this;
}

public class Window
{
    InternalFrame currFrame;

    public static void setCurrComponent(InternalFrame iFrame)
    {
        currFrame = iFrame
    }
}
 
  • Quel est le contexte plus large de ce code? Je ne vois pas pourquoi vous auriez besoin d'un alias pour this (en Java). Maintenant, si cette variable peut également pointer vers quelque chose d'autre, selon certaines conditions, il peut y avoir de bonnes raisons pour cela. Mais pas une seule, appelée selfReference. Sans plus de contexte, la question est assez vague.
  • Je suis un peu confus quant à pourquoi cette question a donc beaucoup d'activité et d'intérêt, mais il n'y a pas de voix.
  • Je suis un peu confus par l'intérêt, étant donné que la question est vague et que l'OP n'a pas tenu compte des demandes de clarification. Les gens sont juste dans l'humeur allez le deviner, je suppose.
  • J'ai demandé autour, et j'ai fait un edit à ce qu'il paraît se passe. Aussi, il y a eu jusqu'voix, tout autant que de nombreux votes contre
  • Votre nouvelle édition n'a pas de sens. La méthode dans la sous-classe toujours être invoquée si elle est remplacée. (La méthode n'est pas surchargée dans votre exemple)
  • Veuillez voir la nouvelle édition de
  • Oui, c'est sans doute pourquoi il avait un selfReference. Toutefois, de noter que vous n'en a pas besoin (en raison du fait qu'il peut accéder à l'extérieure ce)
  • Notez que dans la mise à jour de votre exemple, vous pouvez simplement faire Window.setCurrComponent(IFrame.this).

InformationsquelleAutor user489041 | 2011-05-10