Partage
  • Partager sur Facebook
  • Partager sur Twitter

Méthode de cast manuel

Sujet résolu
    27 novembre 2015 à 0:55:38

    Bonjour, 

    Dans le cadre d'un projet en Java Programmation Orientée Objet je voudrais changer des objets de type File en un type personnel, je vous propose de vous montrer ça en code : 

    package file;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    import plugins.Plugin;
    
    public class PluginFinder implements ActionListener {
    	
    	protected ExtendedTimer finderListener;
    	protected String directory; // directory where the finder search plugin
    	protected PluginFilter filter = new PluginFilter();
    	
    	/**
    	 * create a plugin finder to search in the directory past in parameter
    	 * @param directory search plugin in this directory
    	 */
    	public PluginFinder (String directory){
    		this.directory=directory;
    		this.plugins = new ArrayList<File>();
    		this.finderListener = new ExtendedTimer(this);
    		//finderListener.start();
    	}
    	
    	/**
    	 * return all the files in the directory
    	 * @return all the directory's files
    	 */
    	public ArrayList<File> getAllFiles(){
    		File dir = new File (this.directory);
    		File[] files = dir.listFiles(filter);
    		if (files == null || files.length==0){
    			return new ArrayList<File> ();
    		}
    		return new ArrayList<File>(Arrays.asList(files));
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    	
    		}
    		
    }
    

    Donc avec la méthode getAllFiles() je récupère une liste avec tous les fichiers (File) du dossier. Ces fichiers répondent à certains critères définis dans mon filter. Dans un autre package(plugins) je défini une interface Plugin :

    package plugins;
    
    public interface Plugin {
    	
    	public String transform(String s);
    	
    	public String getLabel();
    }
    


    Donc en gros ce que je voudrais c'est modifier les instances de ma liste obtenue par l'appel à getAllFiles() en instance de Plugin. Alors voilà je viens vers vous pour éventuellement avoir des pistes sur la manière de s'y prendre. 

    Je vous remercie d'avance!

    Naël

    • Partager sur Facebook
    • Partager sur Twitter
      27 novembre 2015 à 10:38:43

      Bonjour.

      Tu as l'interface Plugin, donc tu peux créer 1 ou plusieurs classes implémentant cette interface.

      Ensuite pour faire la conversion tu as plusieurs solutions :

      • Une méthode qui va appeler les getter/setter sur ta nouvelle instance.
        Pas très POO car les setter ne sont pas les plus jolis
        Impl obj = new Impl();
        obj.setFoo(...);
        obj.seBar(...);
      • Un constructeur "par copie" qui aura pour but d'initialiser tes attributs
        Plus propre que la précédente car pas de setter.
        File f = ...
        Plugin p = new Impl(f);
        
        class Impl implements Plugin {
            public Impl(File f) {
                ...
            }
        }
      • Partager sur Facebook
      • Partager sur Twitter
      Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
        28 novembre 2015 à 12:59:06

        Bonjour, 

        C'est bon j'ai réussi grâce à ta deuxième méthode! Je te remercie pour ta réponse.

        Nael

        • Partager sur Facebook
        • Partager sur Twitter

        Méthode de cast manuel

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown