2

我正在用 Java 编写一个程序,我有一个带有头的方法,例如public void doSomething(Object o),我想检查 o 是否是另一个方法的参数的合适类型。所以我所拥有的是:

public void doSomething(Object o)
{
    Method m = //get method of another method (using reflection)
    Class<?> cl = m.getParameterTypes()[0];  //Get the class of the 0th parameter
    if(o instanceof cl)         //compile error here
         //do something
}

但是,这不起作用。有人可以帮忙吗。谢谢

4

3 回答 3

5

试试这个:

if(c1.isInstance(o))
{
    // ...
}
于 2012-04-06T07:11:31.253 回答
4

instanceof将静态类型作为参数,您正在寻找的是动态检查是否o可以作为方法的参数;

Object o = ...
Method m = ...
Class cl = m.getParameterTypes()[0];
if(cl.isAssignableFrom(o.getClass()))  // Is an 'o' assignable to a 'cl'?
{
}
于 2012-04-06T07:09:40.683 回答
1

你可以做

if (o.getClass().equals(cl))

反而。我相信instanceof需要实际类型(likeString和 not String.class)。

于 2012-04-06T07:09:24.980 回答