Liste typée via com4j , java - c# [Résolu]

Messages postés
4
Date d'inscription
mardi 18 août 2009
Dernière intervention
23 octobre 2009
- 23 oct. 2009 à 10:49 - Dernière réponse :
Messages postés
1051
Date d'inscription
lundi 7 mars 2005
Dernière intervention
13 juillet 2010
- 24 oct. 2009 à 02:01
Bonjour,
voilà le problème, je génère avec Com4j d'un fichier projet.tlb des interfaces Java qui me permettent d'utiliser ma projet.dll en .Net depuis Java.
Cependant les listes typées, List ou IList<t> de mes classes .Net, ne sont pas reconnues pas Com4j!

(Si je défini des Listes non typées, alors ce sont des listes d'object que je reçois, et le Cast coté appli java ensuite est impossible...)

Voilou, une aide serait la bienvenue, je stop sur ça depuis super longtemps!!!
Merci
M
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
1051
Date d'inscription
lundi 7 mars 2005
Dernière intervention
13 juillet 2010
- 23 oct. 2009 à 15:26
3
Merci
Tu ne peux pas casté un List d'objet en une liste d'un autre type, mais rien ne t'empêche de garder ta liste comme elle est et de faire seulement le cast quand tu vas récupérer un élément de ta liste.

List<Object> lst = ...;
ICard card = (ICard) lst.get(0);

Merci Arto_8000 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de Arto_8000
Meilleure réponse
Messages postés
4
Date d'inscription
mardi 18 août 2009
Dernière intervention
23 octobre 2009
- 23 oct. 2009 à 17:16
3
Merci
Merci pour ta réponse Arto_8000,
je suis d'accord avec toi, mais y a un petit souci,

en propriété de ma classe c# : List<Object> n'est pas reconnu par tlbimp (utilisé par com4j) lors de la génération des .java

seulement IList est reconnue, et j'obtiens en java des ComObject,

System.out.println(person10.account().cards().item(0))

output : "ComObject : 38ffd30"

Je pense que c'est un objet dérivé de la class com4j.Wrapper, et le Cast genre (Icard) object, ne fonctionne pas...

Verrais tu une autre piste???

Merci marcela2804 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de marcela2804
Meilleure réponse
Messages postés
1051
Date d'inscription
lundi 7 mars 2005
Dernière intervention
13 juillet 2010
- 24 oct. 2009 à 02:01
3
Merci
À la limite ce qui peut envisager comme solution c'est de carrément refaire ta liste à partir de l'autre. Tu aurais alors à utiliser les méthodes qui sont présentes dans tes classes de liste pour avoir accès à la liste et la reconstruire dans un autre objet.

En gros, tu ferais quelque chose comme ça :

List<Object> lstList = ...
IList<Object> lstIList = new IList<Object>();

Iterator<Object> it = lstList.iterator();
while (it.hasNext()) {
     lstIList.add(it.next()):
}


Et le principe inverse s'appliquerait pour le retransposer en un objet List. C'est pas tout à fait l'idéal comme solution, mais ça devrait fonctionner.

Merci Arto_8000 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de Arto_8000

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.