java - 将变量从外部类传递到内部类的最佳方法

标签 java class inner-classes

我正在构建一个 Android 应用程序(但这对帖子来说并不重要),并且我正在编写一个名为 scrollUntilSelectedAvatar() 的方法,其中包含一个类:

public class AvatarManager {

  private HorizontalScrollView avatarPageHorizontalScrollView;

  //mehod that contains the inner class
  public void scrollUntilSelectedAvatar(HorizontalScrollView avatarPageHorizontalScrollView){

        this.avatarPageHorizontalScrollView = avatarPageHorizontalScrollView;

        avatarPageHorizontalScrollView.post(new Runnable() {
            @Override
            public void run() {
                AvatarManager.this.avatarPageHorizontalScrollView.scrollTo(100, 0);
            }
        });
    }

}

我的问题是:在内部类new Runnable()内访问avatarPageHorizo​​ntalScrollView(我将其作为参数传递给该方法)的正确方法是什么。

我发现的方式(AvatarManager.this.avatarPageHorizo​​ntalScrollView)似乎不是最好的方式。

谢谢大家的帮助:)

最佳答案

你的做法是唯一正确的。有关内部类的某些内容的语法可能看起来很奇怪。但事实就是如此。

public class A {

    private int a;

    private abstract class B {
        public abstract void printA();
    }

    public B makeB() {
        return new B() {
            @Override
            public void printA() {
                System.out.println(A.this.a);
            }
        };
    }
}

关于java - 将变量从外部类传递到内部类的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41975776/

相关文章:

c# - 为什么我需要使用 C# 嵌套类

java - 如何使用 JSP/Java 检测移动设备(iOS 和 Android)?

Java同步困境

javascript - 使用 Javascript 更改类

java - 尝试部署到 Google App Engine 时出错

java - 您如何获得实例的封闭实例? (com.sun.jdi)

java - 静态内部类的序列化

java - 为什么我在 Struts 2 应用程序中没有为操作定义结果

java - 手动更新 for 循环迭代器是不好的做法吗?

javascript - 连续的js方法