如何从外部类访问匿名内部类的变量值?

时间:2015-10-04 15:33:48

标签: java android

例如

从外部类

访问OnClickListener中存在的变量

3 个答案:

答案 0 :(得分:2)

关于匿名课程的观点是你不需要引用它们。如果你确实需要引用一个类,它不应该是匿名的。

仅仅因为OnClickListener通常是匿名的,并不意味着他们必须这样做。你可以这样做。

private static final class MyListener implements View.OnClickListener {

    private int field;

    private int getField() { return field; }

    // constructor and onClick() method
}

然后

MyListener myListener = new MyListener();
view.setOnClickListener(myListener);
int a = myListener.getField();

答案 1 :(得分:1)

为什么要麻烦,要么命名你的类,要么将该变量移到外面的类。

答案 2 :(得分:0)

这有点棘手,但你有两个选择:

  1. 创建一个可以存储某些值的类,在外部创建一个实例并将其设置为final。最后,使用setter修改类的内部值。

  2. 如果您的变量太简单而无法创建对象,请在长度为1的最终数组外创建,并在匿名类中指定此0位置的值。