将变量从外部 class 传递到内部 class 的最佳方法
Best way to pass a variable from outer class to inner class
我正在构建一个 android 应用程序(但这对 post 并不重要)并且我正在编写一个名为 scrollUntilSelectedAvatar() 包含 class:
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);
}
});
}
}
我的问题是:在内部 class new Runnable()
中访问 avatarPageHorizontalScrollView(我将其作为参数传递给该方法)的正确方法是什么.
我找到的方法 (AvatarManager.this.avatarPageHorizontalScrollView
) 似乎不是最好的方法。
感谢大家的帮助:)
您的做法是唯一正确的。 inner 类 的一些语法看起来很奇怪。但它就是这样。
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);
}
};
}
}
我正在构建一个 android 应用程序(但这对 post 并不重要)并且我正在编写一个名为 scrollUntilSelectedAvatar() 包含 class:
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);
}
});
}
}
我的问题是:在内部 class new Runnable()
中访问 avatarPageHorizontalScrollView(我将其作为参数传递给该方法)的正确方法是什么.
我找到的方法 (AvatarManager.this.avatarPageHorizontalScrollView
) 似乎不是最好的方法。
感谢大家的帮助:)
您的做法是唯一正确的。 inner 类 的一些语法看起来很奇怪。但它就是这样。
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);
}
};
}
}