A Class.getMethod() question... (an int's class)

J

Joe Weinstein

Hi all,
What's the form for asking a class for a method
with a given name, that takes an int as an argument,
and then invoking it? I have one way which works, but
it is clunky, having to get all the methods first:

void executeIntMethodOn( String methodName, Object myObj, int myInt )
{
Method[] meths = myObj.getClass().getMethods();
for (int i = 0; i < meths.length; i++)
{
if (meths.getName().equals(methodName))
{
System.out.println("got it");
Object[] oo = new Object[1];
oo[0] = new Integer(myInt);
meths.invoke( p, oo );
break;
}
}
}

If I try code like:

Integer i = new Integer(myInt);
Class[] cls = new Class[1];
cls[0] = i.getClass();
Method meth = myObj.getClass().getMethod(methodName, cls );
System.out.println("got it");
Object[] oo = new Object[1];
oo[0] = i;
meth.invoke( p, oo );

It fails to find the method, saying there is no method
of that name taking an Integer (it takes an int). I guess
my problems boils down to how to get an int's class into
the Class array.

thanks in advance,
Joe
 
J

Joe Weinstein

Joe said:
Hi all,
What's the form for asking a class for a method
with a given name, that takes an int as an argument,
and then invoking it? I have one way which works, but
it is clunky, having to get all the methods first:

void executeIntMethodOn( String methodName, Object myObj, int myInt )
{
Method[] meths = myObj.getClass().getMethods();
for (int i = 0; i < meths.length; i++)
{
if (meths.getName().equals(methodName))
{
System.out.println("got it");
Object[] oo = new Object[1];
oo[0] = new Integer(myInt);
meths.invoke( p, oo );
break;
}
}
}

If I try code like:

Integer i = new Integer(myInt);
Class[] cls = new Class[1];
cls[0] = i.getClass();
Method meth = myObj.getClass().getMethod(methodName, cls );
System.out.println("got it");
Object[] oo = new Object[1];
oo[0] = i;
meth.invoke( p, oo );

It fails to find the method, saying there is no method
of that name taking an Integer (it takes an int). I guess
my problems boils down to how to get an int's class into
the Class array.

thanks in advance,
Joe


And, I guess the question is academic, not performance-related.
I was hoping the Class object would keep it's methods in a
sorted order to speed up method-finding, but in looking at
the code, it seems it simply keeps an array which it copies
to return via getMethods(), and getMethod() doesn't do any-
thing faster...
Joe
 
C

Chris Uppal

Joe said:
I guess
my problems boils down to how to get an int's class into
the Class array.

Either of the expressions:
Integer.TYPE
or
int.class
evaluate to the java.lang.Class object corresponding to the primitive type.

For peculiar reasons, 1.5 considers the generic "type" of the expression to be
Class<Integer>
which you may have to take account of when using the int.class object.

-- chris
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,764
Messages
2,569,567
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top