亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么Java中的文件名與公共類名相同?

為什么Java中的文件名與公共類名相同?

江戶川亂折騰 2019-07-03 10:07:10
為什么Java中的文件名與公共類名相同?在Java中,文件名應該與public class包含在那個文件里。為何這是一個限制?它有什么用途?
查看完整描述

3 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

Java有一種有趣的方法:給程序員一個選擇只能降低編程體驗,刪除選擇。

他們在很多地方都這樣做。文件名和包是確定的,但也不允許一個文件中的多個公共類(永遠不會好),也不允許您在文件之間拆分類(該死很難使用!)等等。

我真希望他們能走得更遠。沒有理由使用公共變量:我從來不需要一個變量,也從未見過某個聰明的程序員認為需要一個并且實際上是正確的情況。

我也不介意看到方法/類大小的限制,但這可能會變得粗略(它可以很容易地通過代碼檢查器實現,問題是最需要幫助的公司通常是那些不知道自己需要幫助的公司,因此不使用代碼檢查器之類的工具)。

對于大多數小團隊來說,這并不重要,但當你的團隊成長起來,并擁有來自印度、中國和世界各地不同地方的顧問的多個網站時,你就會開始體會到不靈活的一面。


針對setters/getters的評論:

Javabean是Borland創建的一個令人厭惡的東西,用來破解它們的GUI,然后再改造成Java。

可怕的想法-從OO編程中分散注意力-getter和setter A)顯示了太多的實現,而B)讓您思考如何操作來自另一個對象的數據,而不是要求其他對象為您執行操作。對那些還不能思考的人來說是個壞主意。

偶爾需要使用getter,但除非被認為是絕對不可避免的,否則不應該添加。

應不惜一切代價避免設置人。如果您絕對需要在構造對象之后外部修改狀態,請嘗試使用構建器模式,并在執行任何操作后保護您的setter不被調用。

顯然,每件事都有例外,許多“getter”實際上是關鍵的對象業務邏輯,比如String.ength(),無論字符串是如何實現的,它都是必需的,甚至不通過返回屬性來實現-如果您想稱之為“getter”,這是一個很好的例子。


查看完整回答
反對 回復 2019-07-03
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

我正要說,這只是一個..但我看了看JLS也沒有那么嚴格。從JLS的角度來看,由編譯器來選擇是否設置這樣的限制。

實際上,普通編譯器確實有這種限制,而且,正如其他已經解釋過的那樣,編譯器更容易找到編譯單元,而類加載器則更容易找到具有這種限制的類文件。


查看完整回答
反對 回復 2019-07-03
  • 3 回答
  • 0 關注
  • 731 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號