[java] Reflectie method.invoke array probleem

Pagina: 1
Acties:

  • comprobot
  • Registratie: Augustus 2000
  • Laatst online: 07-08 19:54
Ik heb een probleempje dat dit methode.invoke een foutmelding geeft.


public test(int[] arraytest )


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   ... 
      arri = 5;
      Class [ ] argsCls = meth.getParameterTypes();
      Class type = meth.getReturnType();
      int nrArgs = 1;
      Object [ ] args = new Object [nrArgs];
  
     Object[] details = new Integer[arri]; 



      args[0]= {new Integer(5),new Integer(5),new Integer(61),new Integer(52),new Integer(5)};

   Object res = null;
            res = meth.invoke (members[1], args);



Als ik Integer[] kiest, dan zal er probleem veroorzaakt door
Het verschijnt java.lang.IllegalArgumentException: argument type mismatch

Bij String[] was het geen probleem als ik test(String[] test) gebruik

www.tiedragon.nl


  • reskobon
  • Registratie: November 2001
  • Laatst online: 14-08 22:26
Kan misschien aan mij liggen maar ik snap helemaal niks van je vraag :?
Je zinsbouw is nou niet echt goed Nederlands, dus als je het nog eens goed wil toelichten graag :)

Leeg


  • comprobot
  • Registratie: Augustus 2000
  • Laatst online: 07-08 19:54
de methode van arrays werkt nog niet helemaal goed. Als je een waarde 5 aan een element van array geeft, dan werkt het wel goed. Maar bij meth.invoke(klasse, args) geeft het foutmelding. want er veroorzaakt door Object[] details = new Integer[arri];


klasse {

public int test(int waarde);

Bij primitieve waarden is meth.invoke(klasse, args) geen probleem. Het werkt dus goed.

public int test(int[] test);

Het geeft een bovenstaande foutmelding.
}

www.tiedragon.nl


  • tomato
  • Registratie: November 1999
  • Niet online
Sorry, maar als er iets gezegd wordt over je zinsbouw en gevraagd wordt om je probleem in iets duidelijker Nederlands op te schrijven.... dan post je toch niet zoiets :?

Sorry, je vraag is misschien helemaal niet gek, misschien zijn er hier zat mensen die het antwoord weten, maar hier bakt natuurlijk nog steeds helemaal niemand iets van. Ik in ieder geval niet...

  • reskobon
  • Registratie: November 2001
  • Laatst online: 14-08 22:26
Je foutmelding houdt in:
Thrown to indicate that a method has been passed an illegal or inappropriate argument

Maar ik snap even niet wat dat met jou code te maken heeft maar dat ligt meer aan de code denk ik :)

Leeg


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
nou snap hem ook niet maar doe wel effe een try/catch rond ieder statement weet je waar ie throwed en wat is meth? :)

maar een args[0] = {} is een multidimensionale array...

je zou eigenlijk al de rommel effe moeten weghalen want duidelijk ist niet he :) gewoon
je func en je call

  • TheOneLLama
  • Registratie: Oktober 2000
  • Laatst online: 20-01-2022

TheOneLLama

A llama like no llama before

De parameter is:
int[]
en jij stop er een Integer[] in.. ?

Hm.. waar zou het fout gaan...

Opera OpenOffice.org Jabber Psi jabber://llama@mordax.com


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

TheOneLLama schreef op 31 januari 2003 @ 22:50:
De parameter is:
int[]
en jij stop er een Integer[] in.. ?

Hm.. waar zou het fout gaan...

Nee, want je kan met reflection geen primitieve waarden gebruiken.
Althans, in principe niet, ik geloof dat je wel een int-array kan meegeven, maar weet dat niet meer helemaal zeker.

args[0] een compleet array toekennen is wel weer wat vreemd (dat java dat uberhaupt toelaat)...

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 22-08 20:24

Tuinhark

Retro

Wanneer je de methode opzoekt moet je niet Integer.class gebruiken, maar Integer.TYPE om aan te geven dat je ints gebruikt.

Uit je code kan ik niet opmaken hoe je de methode 'opzoekt', maar ik denk dat het daar aan ligt. Is nl een vaak voorkomend probleem. :P

:Y)

  • TheOneLLama
  • Registratie: Oktober 2000
  • Laatst online: 20-01-2022

TheOneLLama

A llama like no llama before

ACM schreef op 31 January 2003 @ 22:58:

[...]

Nee, want je kan met reflection geen primitieve waarden gebruiken.
Althans, in principe niet, ik geloof dat je wel een int-array kan meegeven, maar weet dat niet meer helemaal zeker.

args[0] een compleet array toekennen is wel weer wat vreemd (dat java dat uberhaupt toelaat)...
Ook in arrays? aangezien een array (ook van int) niet echt op gelijke hoogte staat met een primitive, en bij een method aanroep een reference is.

(edit: het zal wel, weer wat geleerd :))

[ Voor 4% gewijzigd door TheOneLLama op 31-01-2003 23:16 ]

Opera OpenOffice.org Jabber Psi jabber://llama@mordax.com

Pagina: 1