上面那句
"TimePrinter类在beep参数值消失之前必须将beep字段复制为start方法的 局部变量
" 。
和 下面的 红线那句 没有明白。
下面画红线的意思是: start方法的beep参数先复制为 start方法的 局部变量,然后实例化TimePrinter对象的时候又从局部变量传给 TimePrinter 的构造器 ??
上面那句
局部变量
" 。和 下面的 红线那句 没有明白。
下面画红线的意思是: start方法的beep参数先复制为 start方法的 局部变量,然后实例化TimePrinter对象的时候又从局部变量传给 TimePrinter 的构造器 ??
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
start
方法执行完,局部变量引用listener
和timer
无效,但JavaDocs-Timer中指出:Timer
是依靠一个后台线程完成任务的,因此这个线程会保留着对本例中timer
所指对象的引用,所以这个对象不会被GC销毁。这个理解正确。意思是编译器在类
TalkingClock$TimePrinter
中创建了val$beep
实例字段,用来保存start
方法中的beep
变量。start
方法中的局部变量beep
会被传递给TalkingClock$TimePrinter
的构造函数,用来初始化它的val$beep
字段。