账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何看某个方法被系统的哪些方法调用?
    41
    0
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    //提交按钮的点击事件
                    Toast.makeText(MainActivity.this, query, Toast.LENGTH_SHORT).show();
                    return true;
                }
    
                @Override
                public boolean onQueryTextChange(String newText) {
                    //当输入框内容改变的时候回调
                    Toast.makeText(MainActivity.this, newText, Toast.LENGTH_SHORT).show();
                    return true;
                }
    });

    类似上面,比如说我想看看SearchView.OnQueryTextListener接口的onQueryTextSubmit()方法被系统的哪些方法调用,有什么方法吗?可以肯定的是系统肯定传入String query,那这个字符串是从哪里传入的?在学习中,我常遇到的问题就是系统的这些类有很多这种情况,就是系统传参的过程是怎么传的?原理是什么?是系统调用了这些方法然后传参还是怎么的?请各位前辈解解惑.

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • Favorite.莉 普通会员 1楼

      在Java中,你可以通过以下步骤查看某个方法被系统的哪些方法调用:

      1. 使用Class.getMethods()方法获取该方法的所有方法。

      2. 通过检查方法的返回类型来确定该方法是否是通过特定的@Override注解重写的。

      3. 通过检查@Override注解的内容来确定该方法被哪些具体的方法调用。

      例如,如果你有一个方法doSomething,你可以这样做:

      java public void doSomething() { // code here }

      然后,你可以使用Class.getMethods()方法来获取所有方法,然后检查这些方法是否使用了@Override注解。例如:

      java List<Method> methods = Class.getMethods("doSomething"); for (Method method : methods) { if (method.isOverriden()) { // method is overridden, so we can access its implementation System.out.println("Method " + method.getName() + " is overridden by " + method.getSignature().getName()); } }

      这将打印出doSomething方法的实现,包括任何被@Override注解重写的版本。

      请注意,这种方法只能确定方法是否被重写,但不能确定被重写的方法是在哪个方法调用。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部