Instanciation et transformation d'objets en ligne en Java
Je viens de Java à partir de Visual Basic, et semblent penser que j'ai été, à bien des égards, gâté :p
Est-il possible d'instancier un objet et de le modifier en inline? Quelque chose comme:
JFrame aFrame = new JFrame();
aFrame.add(new JPanel() {.setSize(100,100) .setLocation(50,50) .setBackground(Color.red) });
J'ai pu @Override
méthodes, mais je suis à la recherche de quelque chose de plus simple. Je recherche beaucoup, mais si il y a un terme spécifique pour ce genre de inline l'instanciation, il m'échappe.
Merci pour votre temps!
source d'informationauteur GCon
Vous devez vous connecter pour publier un commentaire.
Oui mais certaines personnes considèrent hacky.
Fondamentalement, vous ajoutez une autre couche de
{}
(exemple de l'initialisation du bloc), qui est exécuté lorsque le panneau est instancié. par conséquent, vous pouvez mettre n'importe quel code. (comme appeler setters).Une belle astuce est présenté dans @ClickerMonkey de réponse. Toutefois, si une classe prend en charge le chaînage de méthode, vous pouvez utiliser une syntaxe similaire sans l'initialiseur de type "hack":
L'inconvénient est que le ChainClass doit ressembler à ceci:
C'est, malheureusement, pas le cas pour la plupart des classes Java. Vous pouvez la mettre en œuvre pour vos classes.