Что на самом деле означает getstatic в байт-коде?

У меня есть этот байт-код:

new                 java.lang.Object
// stack is [newObjectRef]
dup 
// Stack is [newObjectRef newObjectRef]
invokespecial       void java.lang.Object.<init>()
// Stack is [initializedAsTypeObjectObjectRef]
putstatic           java.lang.Object class.a
// variable a has the reference of new object
getstatic           java.io.PrintStream java.lang.System.out
// Take the static value of System.out
// Stack is [initializedAsTypeObjectObjectRef System.out]

Обновить, это продолжение:

> ldc                 "test" // Stack is
> [initializedAsTypeObjectObjectRef System.out "test"]
> jsr                  pos.0000026C // call a subrutine invokevirtual       void
> java.io.PrintStream.println(java.lang.String) // actually print the
> result // stack is (I think) Empty at this time ?

Есть ли перевод:

  Object a = new Object();
  a = "test";
  System.out.print(a);

Мой стек хорош?

Я не уверен, что хорошо понимаю из(). Вероятно, мне придется использовать установщик out () и print () после?

Я всегда обычно использую out () для печати ..

5
задан Pier-Alexandre Bouchard 17 December 2011 в 16:45
поделиться