2012-05-11 2 views
0

Je suis assez sûr que c'est impossible (étant donné que c'est une pratique de programmation tellement abyssale), mais je vais demander de toute façon.Chaîne à l'intérieur des opérateurs de points

En Java, existe-t-il un moyen d'utiliser une chaîne à la place d'un nom de méthode (ou d'autre chose) en utilisant l'opérateur point?

Par exemple: java.stringname.NumericShaper(); où stringname = "awt.font"

J'essaye de mettre du code répétitif dans une boucle itérative. Par exemple, une de mes variables est "Settings.can1.baud", et je veux répéter la partie "can1" chaque fois que je passe par la boucle. Peut-être qu'il y a une meilleure façon de faire cela?

Je suis nouveau à la programmation Java, donc je ne suis pas sûr fait aucun sens ...

+3

Essayez [reflection] (http://java.sun.com/developer/technicalArticles/ALT/Reflection/). – zneak

Répondre

2

Si vous voulez dire que vous avez un groupe de membres appelé can1, can2, can3, etc., vous devrait utiliser un array ou un collection à la place.

Il est possible de faire ce que vous voulez en utilisant reflection. Mais c'est fiddly, mauvaise pratique (souvent), et inutile dans ce cas.

2

Vous pouvez faire cette réflexion en utilisant:

try { 

     //loop over stringnames? 
     String stringname = "awt.font"; 
     Class<?> numericShaperClass = Class.forName("java." + stringname + ".NumericShaper"); 


     NumericShaper numericShaper = (NumericShaper) numericShaperClass.newInstance(); 

    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } catch (InstantiationException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
} 

Quant à la deuxième partie de votre question, vous pouvez accéder aux variables membres de votre classe Propriétés en utilisant la méthode Class.getField().

L'utilisation de la réflexion peut être excessive dans cette situation et peut générer un code assez illisible et éventuellement lent.

Questions connexes