我正在编写自己的玩具 Dalvik VM,但我似乎无法弄清楚 dalvik 如何处理继承的静态字段。
考虑下面的java代码:
class Parent { static int parent_int = 10; }
class MyCode extends Parent {
public static void main(String[] args){
System.out.println(parent_int + 1);
}
}
Run Code Online (Sandbox Code Playgroud)
当用 javac 和 java 编译并运行时,它会打印11到控制台,正如人们所期望的那样。然而,当它被编译成 dalvik 时,该parent_int值被转化为sgetget 的语句field@0000,而在is的字段 id<clinit>的方法中。Parentparent_intfield@0001
在我的 Dalvik VM 实现中,这成为一个问题,因为即使类 和已经field@0000初始化,也没有初始化。Parentfield@0001
Dalvik VM 如何处理这个问题?它如何知道它们是相关的并且应该被视为相同?为什么它们一开始就变成了两个不同的领域,而它们本可以是一个领域呢?
当我这样做fmt.Printf("...\n")时不会将光标移动到第0列,因此下一行是缩进的:
13
13
13
13
13
13
113 ('q')
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
package main
import (
"bufio"
"fmt"
"os"
"unicode"
"golang.org/x/crypto/ssh/terminal"
)
func main() {
oldState, err := terminal.MakeRaw(0)
if err != nil {
panic(err)
}
defer terminal.Restore(0, oldState)
reader := bufio.NewReader(os.Stdin)
var c rune
for err == nil {
if c == 'q' {
break
}
c, _, err = reader.ReadRune()
if unicode.IsControl(c) {
fmt.Printf("%d\n", c)
} else {
fmt.Printf("%d ('%c')\n", c, c)
}
}
if err != nil …Run Code Online (Sandbox Code Playgroud) 我需要从学生的角度以某种方式连接谷歌教室,并列出即将推出的所有作业.我在文档中找不到任何相关内容,但使用google身份验证我应该能够做到吗?