02. august 2001 - 15:26Der er
5 kommentarer og 1 løsning
Dynamisk casts
private Vector fields = new Vector();
public addComponent(JComponent jc) { fields.add(jc); }
senere i koden tager jeg fat i feltet...
public void testBinding(Vector fields) { Iterator i = fields.iterator(); JComponent jc; while (i.hasNext()) { jc = (JComponent) i.next(); if (jc instanceof JTextField) ((JTextField) jc).setText(\"gotcha\"); else if (jc instanceof JLabel) { String s = \"gotcha\"; ((javax.swing.JLabel) jc).setText(s); }
Da der jo er en del JComponents at test ville jeg meget meget hellere lave et dynamisk cast hvis det overhovedet er muligt. Min bedste ide er:
public void testBinding(Vector fields) { Iterator i = fields.iterator(); JComponent jc; Class c; while (i.hasNext()) { jc = (JComponent) i.next(); c = Class.forName(jc.getClass().getName()); ((c) jc).setText(s); // det må man ikke }
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
faceorbit: Du kan også gemme objectet sammen med dens navn i et nyt object som du gemmer i din vector. Så ved det du henter fra vectoren selv hvad det skal castes til
Jeg er ikke så stærk i reflection (java.lang.reflect), men hvad med noget i stil med det her:
// Vi skal bruge et array med de argumenter der bruges i den metode vi leder efter Class[] stringClass = { Class.forName(\"String\") };
// få klassen på det object vi kigger på Class c = jc.getClass(); Method setText;
// de argumenter vi vil give til setText Object[] arguments = { \"gotcha\" }; try { // prøv at finde metoden, ellers smides exception setText = c.getMethod(\"setText\", stringClass); // kald den setText.invoke(jc, arguments); } catch (Exception ignored) {}
Hvis der er andre forslag, så slå på tråden! Der kunne være point\'s i det.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.