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

在Java中,如何访问新侦听器块中的静态方法参数?,java,listener,static-methods,inner-classes,Java,Listener,Static Methods,Inner Classes,我有一个静态方法,它接受几个参数。在该方法中,我创建了一个新对象,并向其附加了一个新的侦听器。问题是侦听器块需要访问外部静态方法变量,但我不知道如何引用它们。我知道如何使用非静态方法实现这一点,但不使用静态方法 代码如下: v.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) {

我有一个静态方法,它接受几个参数。在该方法中,我创建了一个新对象,并向其附加了一个新的侦听器。问题是侦听器块需要访问外部静态方法变量,但我不知道如何引用它们。我知道如何使用非静态方法实现这一点,但不使用静态方法

代码如下:

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,或将传入的参数分配给静态方法中的final局部变量。您可以使用匿名类定义中的最终引用。

OnTouchListener
这是针对Android的?是的,它是针对Android项目的。我不能将它们设置为最终引用,因为每次调用静态方法时它们都会有所不同。它们只是调用范围的最终引用,这是您所需要的。你也可以用最后一个局部变量。好的,谢谢!我第一次误读了你的答案,但回头看,它是有效的。