Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Factory problème

3 réponses
Avatar
Xavoux
Bonjour tous,

En cherchant à compiler un exemple d'utilisation du pattern Factory,
j'obtiens une erreur de typage...
Je compile en Java 1.5

public class TestExemples
{
public void utilisation( Factory fabrique ){
TextComponent tc = fabrique.create();
tc.setText( "essai" );
}

public TestExemples()
{
utilisation( new TextFactory1());
utilisation( new TextFactory2());
}
}

==>> incompatible typesz - found java.lang.Object but expected
java.awt..TextComponent

or mes factories sont :

public class TextFactory1 implements Factory<TextComponent>
{
public TextComponent create()
{
return new TextArea(100,50);
}
}

et

public class TextFactory2 implements Factory<TextComponent>
{
public TextComponent create()
{
return new TextField(40);
}
}

avec l'interface

public interface Factory<T>{
public T create();
}

Quelqu'un a-t-il une idée?

3 réponses

Avatar
Xavoux
Le problème suivant provient tout simplement de l'utilisation de Factory
sans paramètre générique dans la méthode utilisation...


"Xavoux" wrote in message
news:45609be4$0$25953$
Bonjour tous,

En cherchant à compiler un exemple d'utilisation du pattern Factory,
j'obtiens une erreur de typage...
Je compile en Java 1.5

public class TestExemples
{
public void utilisation( Factory fabrique ){
TextComponent tc = fabrique.create();
tc.setText( "essai" );
}

public TestExemples()
{
utilisation( new TextFactory1());
utilisation( new TextFactory2());
}
}

==>> incompatible typesz - found java.lang.Object but expected
java.awt..TextComponent

or mes factories sont :

public class TextFactory1 implements Factory<TextComponent>
{
public TextComponent create()
{
return new TextArea(100,50);
}
}

et

public class TextFactory2 implements Factory<TextComponent>
{
public TextComponent create()
{
return new TextField(40);
}
}

avec l'interface

public interface Factory<T>{
public T create();
}

Quelqu'un a-t-il une idée?




Avatar
said.rabie
essayes avec ce bout de code:

public void utilisation( Factory<TextComponent> fabrique ){
TextComponent tc = fabrique.create();
tc.setText( "essai" );
}
Avatar
Xavoux
Merci, c'est en effet ce que j'ai déduit... et essayé...
Je pense que l'exemple donné a été un peu vite "adapté" à la généricité...

wrote in message
news:
essayes avec ce bout de code:

public void utilisation( Factory<TextComponent> fabrique ){
TextComponent tc = fabrique.create();
tc.setText( "essai" );
}