Bonjour à tous,

Je suis face à un petit problème :

J'ai une classe abstraite Mere , dont dérive plusieurs classe Fille :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
abstract class Mere()
{
	public enum Types {
		TYPEA,
		TYPEB
	}
 
	protected Types mType;
 
	abstract public String getStr();
}
 
class FilleA extends Mere()
{
	public FilleA() {
		super();
		mType = Types.TYPEA;
	}
 
	@Override
	public String getStr() {
		return "Fille A";
	}
}
 
class FilleB extends Mere()
{
	public FilleB() {
		super();
		mType = Types.TYPEB;
	}
 
	@Override
	public String getStr() {
		return "Fille B";
	}
}
Mon code génère un ArrayList<Mere> à partir de plusieurs appel à une factory :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class FilleFactory
{
    public static Mere getFille(Mere.Types type)
    {
 
        if(type.equals(Mere.Types.TYPEA))
        {
            return new FilleA();
        }
        else if (type.equals(Mere.Types.TYPEB))
        {
            return new FilleB();
        }
        else
        {
            throw new IllegalArgumentException("Bad Type");
        }
    }
 
    private FilleFactory(){}
}
j'ai donc à ma disposition un tableau de plusieurs Mere (différente FilleA,B,C ...) avec chacune leur propre type.

A un moment donné j'extrait une classe Fille de ce tableau pour m'en servir.
J'ai alors besoin d'appeler la méthode getStr()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Mere obj = tab.get(10);
obj.getStr();
Comment faire en sorte de caster objdans le bon type Fille pour être capable d'appeler la bonne méthode getStr() sachant que le type de ma classe est lié à l'attribut mType ?

Suis je obligé de passer tout en revu ? du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
if(obj instanceof FilleA)
    (FilleA)obj.getStr();
sachant que je peux avoir plusieurs dizaine de types Fille différents , j'ai un peu peur de la tournure que le code risque de prendre.

Merci pour vos conseils