java中判断一个方法有没有参数

Class A
{
public void method()
{
System.out.println("method");
}
public void method2(String str)
{
System.out.println(str);
}
}
定义一个A类如上,现在在定义一个B类,要求调用A中不带参数的方法,但不能用 A a=new A();a.method()调用,相当于你并不知道A类中的什么方法不带参数,那java中有没有一种方法可以判断一个方法形参列表是否为空呢?

可以通过Method这个类来判断:


    Class<?>[] value = method.getParameterTypes();
    System.out.println(value.length);

如果这个method方法有参数,那么这个value数组长度不会为0,存储的是method方法的参数;

如果没有参数,则value数组为空。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-02
如下所示:
Method[] methods = String.class.getMethods();
Method method = methods[0];
boolean value = method.isVarArgs();
如果value返回真,则表示该方法有参数,否则没有参数。追问

method.isVarArgs(): 如果将此方法声明为带有可变数量的参数,则返回 true;否则,返回 false。所以,这只能判断方法里面是否有可变参数,而不是判断参数列表是否为空。

追答

那就用这个了,method.getGenericParameterTypes(),如果返回的数组为空,就是空参数。这个你可能要结合Method类中的几个方法联合起来用,才能达到你的目的。

本回答被提问者采纳
第2个回答  2012-08-06
你在B类里面写Class.forName("A");这就是反射机制A就是A类了!具体有没有带参数的方法就看JAVA api文档了! 100%有的!看反射哪块就行
第3个回答  2015-10-07
method.getParameterTypes()
第4个回答  2012-08-06
您好,当然有。
您可以学习一下Java的反射机制。这样就可以判断了。追问

反射机制我刚学的,但是我没在api里面找到这样的方法

追答

是这样的,当你通过反射取得方法名的时候,就可以直接调用了,它用了可变参数来保存参数类似invoke(Object obj, Object... args)这样的。所以不需要确定参数个数,直接按照你的需求往上添即可。

本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网