Toutes mes excuses... L'ultime erreur qui restait provenait du fait que j'avais ajout� un test stupide qui ne faisait pas appel � Array.newInstance() lorsque la taille du tableau � traiter �tait �gal � 0...

Ca marche maintenant ! Hourra ! Je vous remercie tous beaucoup.
Le vendredi, 10 jan 2003, � 15:14 Europe/Paris, Zeljko VELAJA a �crit :

Voici un exemple qui marche :

import java.lang.reflect.*;
import java.util.*;

class A
{
}

class B extends A
{
}

public class Essai
{
	static A[] getObjects(Object[] list, Class aclass)
	{
		Vector v = new Vector();

		for(int i=0; i<list.length; i++)
		{
			if (aclass.isInstance(list[i]))
				v.add(list[i]);
		}

		A[] result = (A[]) Array.newInstance(aclass, v.size());

		for(int i=0; i<v.size(); i++)
		{
			Array.set(result, i, v.elementAt(i));
		}

		return result;
	}

	public static void main(String[] args)
	{
		Object[] list = {new B(), new B(), new B()};
		A[] as = getObjects(list, B.class);
		B[] bs = (B[]) as;
	}
}



Répondre à