[英]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.