在Java 中模擬C「朋友」概念
要在Java 中的不同包的類別之間授予對私有方法的直接存取權限,請考慮以下技術:
第1 步:建立“安全簽名” Class
在需要存取的類別的套件中,定義一個充當「安全簽章」的公共類別。該類別只能在其包內存取。
第 2 步:限制建構子
將安全簽章類別的建構子設為私有。這確保只有其包中的類別可以實例化它。
步驟 3:建立靜態引用
宣告型別安全簽章類別的靜態變數。這樣可以輕鬆存取簽名對象。
第 4 步:定義目標方法
在希望允許有限存取的類別中,定義一個方法,該方法需要安全簽名類別作為參數。此方法應該具有適當的存取權限,例如 public 或 protected。
例如:
考慮一個場景,類別 Romeo(在 Montague 包中)想要訪問非Juliet類別的公共方法(在包裝內Capulet).
Juliet.java:
package capulet; public class Juliet { public void cuddle(Romeo.Love love) { if (love == null) { throw new NullPointerException(); } System.out.println("O Romeo, Romeo, wherefore art thou Romeo?"); } }
Romeo.java:
package montague; public class Romeo { public static final class Love { private Love() {} } private static final Love love = new Love(); public void cuddleJuliet() { Juliet.cuddle(love); } }
在此範例中,Romeo.Love 類別充當安全簽名。由於其私有建構函數,只有 Romeo 可以建構它。 Juliet 中的 cuddle 方法需要 Romeo.Love 的實例來執行,Romeo 可以提供該實例。這可以防止來自 Montague 包之外的其他類別的未經授權的存取。
以上是如何在 Java 中模擬 C 的「friend」功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!