作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 Hello Android(Android PDF/教程),并且已经多次看到此语法。有人可以向我解释一下定义 run Runnable 时使用的 Java 语法吗?
private class AndroidBridge {
public void callAndroid(final String arg) { // must be final
handler.post(new Runnable() {
public void run() {
Log.d(TAG, "callAndroid(" + arg + ")" );
textView.setText(arg);
}
...
代码是否定义了 Runnable 对象并重写了它的 run 方法?
最佳答案
正如 Dave Newton 所指出的,这是一个实现 Runnable
接口(interface)的匿名内部类。
至于为什么要使用它,它可以被认为是某种语法糖。您会注意到,在您的示例中,run()
中的代码可以访问与定义匿名内部类本身相同的范围。
这简化了对这些成员的访问,就像您在外部定义该类一样,您必须传入对您想要调用/使用其成员的任何对象的引用。
其实IIRC,这其实就是Java编译匿名内部类时发生的情况;如果存在对外部包含类的引用,编译器将创建一个构造函数,该构造函数传入对外部包含类的引用。
关于Java,你怎么称呼这个?以及为什么)};,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13522104/
所以我正在尝试使用 C++ 中的 GLFW 和 GLEW 编写一个简单的 3D 渲染引擎。然而,程序在 glDrawArrays(GL_TRIANGLES, 0, model.indicesCount
我是一名优秀的程序员,十分优秀!