Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
723 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Besoin d'un "setteur" générique ... :s

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'un "setteur" générique ... :s

n°1431988
Boumbo27
Posté le 27-08-2006 à 00:45:37  profilanswer
 

Bonjour,
 
Je cherche à réaliser une fonction en java qui prend en entrée :  
- un objet quelconque ;
- un nom de d’attribut sous forme de String (correspondant à un attribut de l’objet) ;
- une valeur
 
Et qui set l’attribut avec la valeur passée en paramètre.
 
Je souhaiterais que ma fonction ait pour prototype :
 
public void GenericSet (Object obj, String attribut, String value)
{
// Ici on set l’attribut “attribut” de "obj" avec la valeur “value”
}
 
Je me creuse la tête mais je ne vois pas trop comment faire concrètement … :??:  

mood
Publicité
Posté le 27-08-2006 à 00:45:37  profilanswer
 

n°1432015
Nicolas_75
Posté le 27-08-2006 à 03:36:31  profilanswer
 

Bonjour,
 
Deux remarques préalables :
(1) à moins d'être un programmeur averti qui sait ce qu'il fait, recourir à de telles méthodes mettant en jeu l'introspection cache souvent un réel problème dans la conception de l'application ;
(2) il peut paraître inhabituel de changer directement un champ à l'intérieur de l'objet, alors qu'on utilise souvent des "setters" monObjet.setMonAttribute(new Value).
 
Ceci étant dit, si j'ai bien compris ce que tu demandes, cela se résume à une ligne :

Code :
  1. obj.getClass().getField(attributeName).set(obj,value);


 
Ci-dessous un programme de démonstration.
 
Nicolas
 

Code :
  1. // Nicolas_75, 27 août 2006
  2. // appeler le fichier Exemple063_GenericSet.java
  3. import java.lang.reflect.Field;
  4. // Pour tester :
  5. class Employee {
  6.     public String salary = "1000";
  7. }
  8. public class Exemple063_GenericSet {
  9.    
  10.     public static void GenericSet(Object obj, String attributeName, String value) {
  11.         try {
  12.           obj.getClass().getField(attributeName).set(obj,value);
  13.         } catch (NoSuchFieldException e) {
  14.             e.printStackTrace();
  15.             // l'attribut n'existe pas au sein de l'objet
  16.         } catch (IllegalArgumentException e){
  17.             e.printStackTrace();
  18.             // problème avec Field.set()
  19.         } catch (IllegalAccessException e) {
  20.             e.printStackTrace();
  21.             // problème avec Field.set()
  22.         }
  23.     }
  24.    
  25.     public static void main(String[] args) {
  26.         Employee employee = new Employee();
  27.         System.out.println("Salaire de notre employé : "+employee.salary);
  28.         System.out.println("Procédons à une augmentation !" );
  29.         GenericSet(employee, "salary", "2000" );
  30.         System.out.println("Salaire de notre employé : "+employee.salary);
  31.     }
  32.    
  33.     // Résultat :
  34.     // Salaire de notre employé : 1000
  35.     // Procédons à une augmentation !
  36.     // Salaire de notre employé : 2000
  37. }

n°1432019
phnatomass
Je m'empare de ton esprit !!
Posté le 27-08-2006 à 04:33:32  profilanswer
 

L'api Common BeanUtils est la pour ca.
BeanUtils
static void setProperty(java.lang.Object bean, java.lang.String name, java.lang.Object value)  
          Set the specified property value, performing type conversions as required to conform to the type of the destination property.

n°1432132
Boumbo27
Posté le 27-08-2006 à 15:58:48  profilanswer
 

Merci pour la réponse c'est exactement ce que je recherchais :)
Je te rassure Nico_75 cela ne vient pas d'un défaut de conception, je sais parfaitement ce que je fais en touchant à cela :)
 
merci

n°1432136
Nicolas_75
Posté le 27-08-2006 à 16:25:36  profilanswer
 

Pour ma part, je t'en prie.  :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Besoin d'un "setteur" générique ... :s

 

Sujets relatifs
C++? C'est ce dont j'ai besoin??Besoin d'aide pour modification courte d'un fichier php
Besoin aide pour créer un pop-up ou une image en 1er planDébuter en c# / asp.net, besoin de conseils
Besoin d'un test d'arrêt du While efficace!!!Excel : Besoin d'une formule qui additionne seulement les positifs ?
besoin d'infos sur la sortie serie et les souris series...requete multiple PHP SQL : besoin coup de main urgent
besoin d'aideDébutant, besoin d'aide pour créer site Internet IMPORTANT
Plus de sujets relatifs à : Besoin d'un "setteur" générique ... :s


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR