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

在Java中,如何在新的侦听器块中访问静态方法参数?

芮学
2023-03-14
问题内容

我有一个接受几个参数的静态方法。在方法内部,我正在创建一个新对象并将新的侦听器附加到该对象。问题是侦听器块需要访问外部静态方法变量,但我不知道如何引用它们。我知道如何使用非静态方法来实现此目的,而不是使用静态方法。

这是代码:

v.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                case MotionEvent.ACTION_UP:             
                    ((Activity)*context*).startActivityForResult(*intent*, 0);
                    break;
                }

                return true;
            }
        });

星号包围的上下文和意图变量是传递给静态方法的对象。由于OnTouchListener是一个内部块,因此它不知道那些对象。我该如何引用它们?


问题答案:

在创建侦听器之前,请将静态方法的参数声明为final,或者将传入的参数分配给static方法中的最终局部变量。您可以从匿名类定义中使用最终引用。



 类似资料:
  • 问题内容: 如果我有以下python代码: 它抱怨 如何bar在方法中访问类/静态变量? 问题答案: 代替bar使用或。分配给将创建一个静态变量,分配给将创建一个实例变量。

  • 问题内容: 如果我有以下python代码: 它抱怨 如何在方法中访问类/静态变量? 问题答案: 代替使用或。分配给将创建一个静态变量,分配给将创建一个实例变量。

  • 问题内容: 我有一个类,我正在为应该执行以下操作的方法编写测试: 1)它应该调用静态方法上 2)它应该从子类方法填充变量 3)它应该从传递String参数的最终帮助器类中调用静态方法 4)它应该在blockList中调用每个的run方法 到目前为止,我有这个空方法: 我正在使用JUnit,Mockito来模拟对象,并且尝试使用PowerMockito来模拟静态类和最终类(Mockito不能这样做)

  • 问题内容: 我的POST方法看起来像这样: 当我在Netbeans中创建Jersey客户时,调用post方法的方法如下所示: 运行此测试时: 它在服务器中提供以下输出: 我需要更改什么才能使参数给出正确的值? 问题答案: 你的方法应该接受JSON对象而不是字符串。Jersey使用JAXB支持封送和拆封JSON对象(有关详细信息,请参阅jersey文档)。创建一个类似的类: 然后,你的方法将如下所示

  • 为什么会这样?我的意思是,访问私有变量。

  • 我想在Java中添加一个按钮侦听器,这样当用户只需按下按钮时,按钮就会被按下。 我尝试将此操作监听器添加到我创建的按钮: 这就是整个功能: 然而,当我的gui出现时,我在输入输入后按“回车”键,什么也没有发生。我必须亲自点击按钮,这正是我试图避免的! 这是我创建的窗口: 我希望用户输入一个数字,然后按enter键,然后单击按钮。帮助我做错了什么?