簡體   English   中英

如何使用包私有構造函數創建類?

[英]How to create a class with a package private constructor?

我在一個圖書館里工作,我想返回一個代表真實世界對象的對象。 我想向開發人員展示此類,以操縱真實世界的對象,但我不想讓他們自己構造這些對象。

public class World {
    public static List<RealObject> getAllObjects() {
        // How to create RealObject with physicalID?
    }
}

public class RealObject {
    private int physicalID;

    public RealObject(int physicalID) {
        // Undesirable, user has no knowledge of IDs
    }

    public void setState(int state) {
        // Code using physicalID to change state
    }
}

這些對象目前沒有構造函數,並且具有一個私有id字段,該字段是我從庫中反射設置的。 這很完美,但是我不禁認為必須有一個更好的解決方案。 在我的情況下,也許有用的約束是只需要從另一個類構造此對象即可。

有更好的解決方案嗎? 在這種情況下,出於組織目的,是否仍可以將類放在單獨的文件中?

如果將默認訪問級別放在構造函數(或任何其他方法)上,則只能由同一包中的類訪問。

要具體回答標題中的問題:

public class RealObject {
  RealObject(int physicalID) {
    // Package-private constructor
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM