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実際のタイプが必要だと思います(のようStringにそしてそうではありませんString.class)。

于 2012-04-06T07:09:24.980 に答える