Forum Programmation.java CharSequence et String : incompatible !

Posté par  (site web personnel) .
Étiquettes : aucune
0
17
jan.
2005
Bonjour forum,

je suis confronté a un problème de taille : sur le WSAD du boulot, il m'est impossible d'affecter du String à un CharSequence !
Un comble quand on sait que CharSequence est en fait une interface pour String.

Ainsi un code comme
CharSequence plop = "coincoin";
-> impossible de convertir String en CharSequence

Bon en soit c'est pas grave, je n'ai jamais eu a ecrire du code pareil, en revanche :

Pattern p = p.compile("coin");
Matcher m = p.matcher("coin coin");

Là ca me chagrine car la fonction matcher attend en paramètre un CharSequence !!

Je dois absolument utiliser des regexp dans mon code, donc il faut que je trouve le pourquoi du comment.

Je suspecte un bug du SDK (celui d'IBM, fournit avec WebSphere Studio 5.1, le 1.3 je pense, mais j'y pige rien car regex est apparu dans le 1.4 de chez sun il me semble, donc
j'suis largué par leur numéro de version qui diffèrent)

Si quelqu'un a déjà eu le même problème sous websphere, j'suis preneur

Merci.

P.S : bien evidemment sous d'autre IDE mon code marche nickel, je ne pense donc pas qu'il faille le remettre en cause. Je cherche plutot une méthode de contourner ce bug.
  • # mauvaise idée mais bon

    Posté par  . Évalué à 1.

    c'est peut être complétement a coté de plaque et en tout cas pas beau du tout :
    String s = "coin coin";
    CharSequence cs = s.subSequence(0, s.length()-1) ;
    • [^] # Re: mauvaise idée mais bon

      Posté par  (site web personnel) . Évalué à 2.

      dans String je n'ai que "subString", et qui renvoit un string, donc idem :(

      Mais c'est abusé que le jdk ne puisse pas affecter un string a un CharSequence quand même, ca marche partout de la meme facon, même sur le site de sun, et là avec le jdk d'IBM ca marche pas.... rargghhh....
  • # ou peut être ...

    Posté par  (site web personnel) . Évalué à 1.

    Pattern p = p.compile(new CharSequence( "coin"));
    Matcher m = p.matcher(new CharSequence("coin coin"));
    • [^] # Re: ou peut être ...

      Posté par  (site web personnel) . Évalué à 2.

      Non CharSequence est une interface, elle ne peut donc être instanciée...

      Ce n'est qu'un type "abstrait", compatible avec String, StringBuffer, et CharBuffer (dixit la javadoc)
      • [^] # Re: ou peut être ...

        Posté par  (site web personnel) . Évalué à 0.

        Je viens de le voir dans l'API (j'avais dis ça à l'aveuglette ... :P
        T'as essayé un cast (je pense que ça marche pas plus du fait que c'est une interface ...) ?

        Sinon contourne le problème en installant un package de regex exterieur au SDK... bon courage en tout cas !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.