Class.getMethod() question (or how to refer to 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
 
O

Oliver Wong

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


Use Integer.TYPE

<SSCCE>
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class test1 {
public static void main(String[] args) throws SecurityException,
NoSuchMethodException, IllegalArgumentException,
IllegalAccessException,
InvocationTargetException, ClassNotFoundException {
Class[] cls = new Class[1];
cls[0] = Integer.TYPE;
Method meth = test1.class.getMethod("foo", cls);
System.out.println("got it");
Object[] oo = new Object[1];
oo[0] = Integer.valueOf(5);
meth.invoke(new test1(), oo);
}

public void foo(int i) {
System.out.println(i);
}
}
</SSCCE>

- Oliver
 

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

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top