- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
Hệ thống.ra
声明为 public static final PrintStream ra
.
但是你可以调用Hệ thống.setOut()
Chỉ định lại nó.
嗯?如果它是 cuối cùng
, điều này có thể xảy ra như thế nào?
(相同点适用于Hệ thống.in
VàHệ thống.lỗi
)
更重要的是,如果您可以改变 public static final 字段,就 cuối cùng
给您的保证(如果有的话)而言,这意味着什么? (我从来没有意识到也没有预料到 System.in/out/err 的行为是 cuối cùng
biến đổi)
1 Câu trả lời
JLS 17.5.4 Ghi các trường được bảo vệ :
Thông thường, các trường tĩnh cuối cùng có thể không được sửa đổi. Tuy nhiên
Hệ thống.in
,Hệ thống.ra
, VàHệ thống.lỗi
là các trường tĩnh cuối cùng, vì lý do cũ, phải được phép thay đổi bằng các phương phápHệ thống.setIn
,Hệ thống.setOut
VàHệ thống.setErr
. Chúng tôi gọi những lĩnh vực này là được bảo vệ ghi để phân biệt chúng với các trường cuối thông thường.Trình biên dịch cần xử lý các trường này khác với các trường final khác. Ví dụ, việc đọc một trường final thông thường là "miễn nhiễm" với đồng bộ hóa: rào cản liên quan đến khóa hoặc đọc dễ bay hơi không nhất thiết phải ảnh hưởng đến giá trị được đọc từ trường final. Vì giá trị của các trường được bảo vệ khi ghi có thể thay đổi, nên các sự kiện đồng bộ hóa phải có tác động đến chúng. Do đó, ngữ nghĩa chỉ ra rằng các trường này được coi là các trường bình thường không thể thay đổi bởi mã người dùng, trừ khi mã người dùng đó nằm trong
Hệ thống
lớp học.
顺便说一句,实际上你可以通过反射来改变 cuối cùng
字段,方法是调用它们的 setAccessible(đúng)
(或者使用 Không an toàn
方法).这种技术在反序列化过程中被 Hibernate 和其他框架等使用,但它们有一个局限性:在修改前看到 final 字段值的代码不能保证在修改后看到新值。所讨论的字段的特别之处在于它们不受此限制,因为它们由编译器以特殊方式处理。
"cuối cùng" System.out, System.in và System.err? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/30061231/
在编程方面我是个菜鸟。我正在尝试了解 Node.js 和 MongoDB。 下面是我的代码,它将搜索数据库并按州(例如加利福尼亚州、夏威夷州、佛蒙特州等)和最高温度对其进行排序。 当我运行 app.j
我可能在这里遗漏了一些非常简单的东西: package main import ( "fmt" "strconv" "reflect" ) func main() {
我正在尝试运行 npm install bitgo命令但在终端上出现以下错误, npm ERR! code EMFILE npm ERR! syscall spawn git npm ERR! pat
我问了另一个与错误有关的问题。不确定我是否应该编辑该问题。 无论如何,对于下面的代码: app.use((err, req, res, next) => { res.status(err.stat
我正在使用 Promise,并且代码如下所示: function getStuff() { return fetchStuff().then(stuff => process(stuff)
这个问题已经有答案了: Why is `throw` invalid in an ES6 arrow function? (3 个回答) 已关闭 6 年前。 以下代码可以正常工作: pool.get
当我尝试向 redis 添加模块时,出现错误:(err) ERR 不支持的 CONFIG 参数:module-add 我已经通过以下方式安装了动态 redis :- $mkdir -p ~/repos
当我重新分片redis集群时,我遇到了一个问题。 redis集群信息和问题详情如下: obasa04:/usr/redis-4.0.2/src # redis-trib.rb info 10.239.
有什么理由在nodejs中写next(new Error(err))而不是next(err)吗? 非常感谢! 最佳答案 在没有任何上下文的情况下,我假设err已经是一个对象(通常在节点中),因此没有理
我正在尝试创建一个从 API 获取数据的全栈 Node 和 Vue 应用程序。我遇到了一个问题,我试图同时运行客户端和服务器,但代码遇到错误。如果我错误地构建了这个问题,请耐心等待,因为我对编码还很陌
我要更新 npm 最新版本,但显示此错误消息: G:\>npm i -g npm ERR! code ENOLOCAL npm ERR! Could not install from "" as it
为什么在执行 sudo npm install npm 时会出现这个奇怪的错误?我有时在尝试安装其他模块时也会得到它! 错误: > scrypt@6.0.3 preinstall /home/user
我使用 ctypes 围绕 libbgpdump 编写了一个 python 包装器,但是当 libbgpdump 调用“err()”时它会出现段错误。这是失败的 C 代码: if(count > MA
我想运行这个项目:https://github.com/adonis-china/adonis-adminify 当我运行npm install时,存在错误: > sqlite3@3.1.13 ins
我尝试在我的服务器上运行 npm install 并收到此错误。 > node-cron@2.0.3 postinstall /home/workspace/AgreementCancellation
我正在尝试在我的 Node 项目上创建一个错误处理程序,但我不明白一些事情。 对于抛出的错误,我可以从 2 种不同的方式中捕获: 进程.on() process.on('uncaughtExcepti
当我在我的“npm cache clean”中写入时,出现了这个错误“npm ERR!Windows_NT 6.3.9600 npm ERR!argv” C:\iaAC>npm cache clean
在我的 npm run 构建脚本执行后,我很难深入了解我收到的 npm 错误。终端报错如下: npm ERR! code ELIFECYCLE npm ERR! errno 2 npm ERR! vi
我试图在一个新的项目目录中运行 yo angular,但它在途中的某个地方给了我 ENOENT 错误。是的,我看过 this similar question ,但它的解决方案对我不起作用。 在运行
试图在 Ubuntu 18.04 x64 上运行它。它曾经在一天前正常工作,但它突然停止了。 npm i simple-youtube-api 我曾经能够安装它们但不是任何人,我得到这个: > buf
Tôi là một lập trình viên xuất sắc, rất giỏi!