当前位置: 首页 > 面试题库 >

如何通过反射确定方法是否返回“ void”

司空温书
2023-03-14
问题内容

我有一个java.lang.reflect.Method对象,我想知道它的返回类型是否为void

我已经检查了Javadocs,并且有一个getReturnType()返回Class对象的方法。问题是,如果方法无效,他们不会说返回类型是什么。

谢谢!


问题答案:
if( method.getReturnType().equals(Void.TYPE)){
    out.println("It does");
 }

快速样本:

$cat X.java

import java.lang.reflect.Method;


public class X {
    public static void main( String [] args ) {
        for( Method m : X.class.getMethods() ) {
            if( m.getReturnType().equals(Void.TYPE)){
                System.out.println( m.getName()  + " returns void ");
            }
        }
    }

    public void hello(){}
}
$java X
hello returns void 
main returns void 
wait returns void 
wait returns void 
wait returns void 
notify returns void 
notifyAll returns void


 类似资料:
  • 问题内容: 我正在遍历Jar文件中的类,希望找到那些不是抽象的类。我可以通过实例化类并捕获InstantiationException来解决此问题,但是由于某些类的启动工作量很大,因此性能会受到影响。我在Class.java文档中找不到明显类似于isAbstract()的东西。 问题答案: 当您在类对象上调用getModifiers()时,它将抽象作为其修改器之一。 该链接应该有所帮助。 也: h

  • 是否有可能找出方法的参数是否是的?我试过这个: 但是,即使第一个参数有< code>final修饰符,< code>modifiers也被设置为零。 编辑:我真的不认为我的问题是重复的。当我使用类成员(例如字段、方法等)尝试此代码时,它可以完美地工作。但是使用方法参数失败! edit2:在你建议我的问题中,我没有找到答案,所以你能帮助我,如何检查参数是否是最终的?

  • 问题内容: 我对Java没有太多的经验。我不确定这个问题是否很愚蠢,但是我需要从Firebase实时数据库中获取一个用户名,并通过此方法返回该名称。因此,我想出了如何获得该值,但是我不明白如何通过此方法返回它。最好的方法是什么? 问题答案: 这是异步Web API的经典问题。您现在无法返回尚未加载的内容。换句话说,您不能简单地创建一个全局变量并在onDataChange()方法外部使用它,因为它将

  • 我希望在我的dao对象中有这样的方法 但我得到了错误 错误:不确定如何将游标转换为此方法的返回类型public abstract java。util。地图 是否可以将其更改为工作版本? 因此,返回的类型可能不同,但主要条件是 数据库中只能有一个查询 我希望避免额外的代码,比如只为这个方法创建额外的数据结构

  • 我在一些遗留代码中有一个静态方法,由多个客户端调用。我显然没有办法覆盖它,也没有办法通过依赖注入来改变行为。我不允许修改现有的类。 我现在想做的是使用反射更改行为(该方法-具有相同的签名和返回类型)。 可能吗?如果没有,任何设计模式能拯救我吗? 谢谢 编辑:对于我可以更改/修改的内容存在一些混淆。我不能更改任何现有的类/方法,但我可以向项目中添加更多的类。我对现有类所能做的最好的事情就是对它们进行

  • 问题内容: 我有这样的代码来使用读取文本文件: 它可以正常工作,但是Findbugs报告警告: NP_DEREFERENCE_OF_READLINE_VALUE:取消引用调用readLine()的结果,而不检查结果是否为null。如果没有更多的文本行要读取,则readLine()将返回null,并取消引用将生成一个null指针异常。 当我更改为时,即 该方法返回而该方法始终返回-实际上这是一个无限