Java 访问';这';在匿名方法中
我正在尝试在Android应用程序中执行一个简单的全局异常处理程序,但遇到了一些问题:Java 访问';这';在匿名方法中,java,android,Java,Android,我正在尝试在Android应用程序中执行一个简单的全局异常处理程序,但遇到了一些问题: public class TicTacToe extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Thread.cu
public class TicTacToe extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread.currentThread().setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
Toast.makeText(this, "TOAST", Toast.LENGTH_LONG);
}
});
setContentView(R.layout.main);
}
}
我对Android和java都是一个新手,但在.NET中,这是可行的。我不能从java中的匿名方法访问局部变量吗?如果是,我应该如何重写它
谢谢,
维塔利你可以,但不能那样做<代码>此引用
UncaughtExceptionHandler
对象
将this
更改为TicTacToe。this
您还应该有一个编译时错误。不是吗?正如另一个答案中提到的,诀窍是
这个被隐藏了。另一种解决方法是在外部类中添加一个返回this
的方法
它意识到这会稍微破坏类签名,但是如果你保持方法的私有性,那似乎没什么大不了的。有人对这比其他解决方案好还是坏有意见吗
public MyOuterClass {
private MyOuterClass getThis() {
return this;
}
private void outerClassMethod(new MyAnonymousClass() {
public void anonymousClassMethod() {
doSomething(getThis());
}
});
}
你好你说得对。我确实有一个编译错误,很抱歉没有发布它。不管怎样,这似乎有帮助。谢谢。更详细地说,当你这么做的时候,你实际上是在组建一个新的班级。它有一个.class文件(或者我猜是Dalvik的等效文件)和所有东西。所以“this”就是这个类的实例。谷歌“匿名内部类”获取更多信息。如果有合适的方式,为什么会有人使用这种模糊的方式?