[JAVA] Réalisation d'une classe permettant de filtrer un flot d'entrée

Réalisation d'une classe permettant de filtrer un flot d'entrée [JAVA] - Programmation

Marsh Posté le 14-11-2001 à 18:15:22    

Voilà, je dois faire un filtre sur un flot d'entrée qui met tous les caractères en minuscules.
Pour cela, je dois faire une classe dérivé de reader et redéfinir la méthode read.... le seul problème est que je sais pas comment faire?
Qqun peut m'aider.

Reply

Marsh Posté le 14-11-2001 à 18:15:22   

Reply

Marsh Posté le 16-11-2001 à 14:40:16    

Tois recuperer le source read, pour cela, tu dois décompresser le "jre.jar" (avec winzip) et tu decompil read.class (avec jad.exe).
Et tu modifie dans le code ce que tu veux.

Reply

Marsh Posté le 16-11-2001 à 16:36:13    

Tu sais ce que c'est l'héritage? Tu as quel niveau en Jave exactement. Bon quelques pistes :-)
 
public class MyReader extends Reader {
 
      public MyReader()
      {
           super();
           // choses spécifiques à ta classe
      }
 
      public int read(char[] ch)
      {
           // overriding
      }
 
En fait tu dois voir le javadoc de la classe reader:
http://java.sun.com/j2se/1.3/docs/ [...] eader.html
 
Là tu es as les différentes signatures de méthodes. Tu peux éventuellement, decomplier le source.jar et voir le code de la classe mais ce n'est pas le but.
 
Pour ce qui est de mettre tout les caractères en minuscules, il y a des méthodes toutes faites en Java qui permettent de faire ca (voir String et StringBuffer).
 
Hope it helps,
 
Stéphane


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 16-11-2001 à 18:11:38    

Voilà ce que j'ai fait. Ca marche mais est ce correct?
 
class LowerCaseReader extends Reader
 {
   
 public LowerCaseReader (Reader in)
  {
  super(in);
  }
 
 public int read () throws IOException
  {
  return((int)Character.toLowerCase((char)((Reader
)lock).read()));
  }
 
 public void close ()
  {  
  }
 
 public int read(char[] cbuf,int off,int len)
  {
  return 0;
  }  
 
 public boolean ready() throws IOException
  {
  return(((Reader)lock).ready());
  }  
}

Reply

Marsh Posté le 16-11-2001 à 19:38:53    

Scoubidoo a écrit a écrit :

Voilà ce que j'ai fait. Ca marche mais est ce correct?




 
Non
 
class LowerCaseReader extends Reader
{
 public LowerCaseReader (Reader in)
  {
  super(in);
  }
// CORRECT Mais si tu n'offres que ce moyen pour déclarer ta classe (il y a plusieurs constructeur je pense ...
 
 
 public int read () throws IOException
  {
  return((int)Character.toLowerCase((char)((Reader
)lock).read()));
  }
// CORRECT
 
 
 public void close ()
  {  
  }
// Si elle est vide, pas besoin de la déclarer
 
 public int read(char[] cbuf,int off,int len)
  {
  return 0;
  }  
// Je ne suis pas sur que ce soit le but de cette fonction. Si tu ne veux pas l'utiliser, ne la déclare pas
 
 
 public boolean ready() throws IOException
  {
  return(((Reader)lock).ready());
  }  
 
Si tu as plus de questions n'hésite pas


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 16-11-2001 à 19:53:21    

pour le constructeur, j'ai pas besoin d'aut chose.
sinon  
 
public int read(char[] cbuf,int off,int len)
 {
 return 0;
 }  
 
je fais ça pcq sinon ça fait une erreur à la compilation pcq c une méthode abstraite de reader à redéfinir(puisqu'abstraite)
Vala

Reply

Marsh Posté le 16-11-2001 à 19:54:52    

j'ai oublié.... c la meme chose pour close.

Reply

Marsh Posté le 16-11-2001 à 21:06:42    

la méthode close devrait pas fermer lock (le reader passé en paramètre du constructeur) ?

 

[edtdd]--Message édité par benou--[/edtdd]

Reply

Marsh Posté le 16-11-2001 à 23:13:32    

ah ouais pas con...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed