所以我知道可以通過將sealed屬性設置爲true來封裝jar文件中的包,但是可以對清單中的類條目執行相同的操作嗎?是否可以密封jar文件中的類?
如果Boot.class存在或僅封裝僅用於軟件包,此密封屬性將在下面工作嗎?
實施例:
Manifest-Version: 1.0 Name: com/myCompany/randompackage/Boot.class Sealed: true
所以我知道可以通過將sealed屬性設置爲true來封裝jar文件中的包,但是可以對清單中的類條目執行相同的操作嗎?是否可以密封jar文件中的類?
如果Boot.class存在或僅封裝僅用於軟件包,此密封屬性將在下面工作嗎?
實施例:
Manifest-Version: 1.0 Name: com/myCompany/randompackage/Boot.class Sealed: true
它沒有任何意義,以密封的類。您只能密封一個包裝,因爲只有一個包裝需要保護。沒有必要保護一個班級,因爲無法將一個班級的內容分散到兩個文件中。只能將一個包的類擴展到兩個JAR上。密封意味着防止這種情況。雖然它不是默認值,但將其設置爲默認值是個好主意。
例
Alice寫了一個叫做alice
,它包含兩個類alice.Data
和alice.Work
。 Data類包含一些不能更改的變量。否則,Work類中的代碼可能會失敗。 Alice將Data類聲明爲私有包,因爲Work類需要訪問數據。現在,她將兩個類的包放入名爲alice.jar
的JAR中,並將JAR提供給Bob。
但Bob需要做更多的事情,並要求Mallory寫另一個類,因爲Alice已經在其他方面工作了。所以馬洛裏寫了一個名爲mallory
的包,並實現了所謂的類mallory.Work
。但馬洛裏很羨慕,並想詆譭愛麗絲,並寫了另一個類alice.Anger
。然後她將兩個類放入名爲mallory.jar
的JAR中,並將JAR提供給Bob。
鮑勃同時使用的JAR文件並運行與Alice's代碼的麻煩,因爲從mallory.jar
類alice.Anger
一直包到包alice
私接和alice.Data
破壞數據。
如果Alice將她的JAR封閉,Mallory將不可能在屬於包alice
的mallory.jar
中放置課程。 Java會拒絕這個JAR,因爲已經有另一個包含alice
包的JAR,並且每個包只能在一個JAR中。
你打算通過封閉某個班級來達到什麼目的? –
http://docs.oracle.com/javase/tutorial/deployment/jar/sealman.html –
我讀過這篇文章,它只顯示瞭如何封裝一個包,我想知道是否可以爲類入口 – user2352835