[英]How i would create multiple instances of different classes in an easy way?
我正在尋找一種方法來創建不同類的不同實例,而無需編寫如下代碼:
PersonInstance pinstance = new PersonInstance();
FamilyInstance finstance = new FamilyInstance();
但是這樣做會導致實例數量過多(例如70個)。 在不編寫70行具有相同代碼種類的代碼的情況下,如何制作好的代碼有什么想法? 如果您不明白:
用經典方法初始化70個不同的實例(不同的類,一切都不同)
PersonInstance instance = new PersonInstance();
對於70次(不同的類,不同的實例標識符),有點不客氣。 我想知道如何不使用這種方式來初始化它們。 顯然,所有類都有共同點,它們都在同一類上擴展。 我想知道是否可能?
如果類是相互關聯的,即繼承,則創建一個數組。 訪問C ++創建對象數組(來自不同的類)
如果我理解這是正確的,則必須為所有不同的類創建一個超類。 例:
class B extends PersonInstance
{
//
}
class C extends PersonInstance
{
//
}
然后,您必須創建一個數組或一個列表,例如:
List<PersonInstance> list = new ArrayList<>();
for(int i = 0; i<=69; i++)
{
list.add(new B());
// or list.add(new C());
}
您可以使用依賴注入/控制反轉(IoC)。 例如,Spring帶有@Autowire
注釋來放置您的構造函數。依賴注入容器執行所有初始化,以解析所有依賴項並將它們傳遞給適當的構造函數,而無需調用new
自己。 該代碼變得更簡潔,更易於進行單元測試。.稍后,當我在PC上時,我將添加鏈接:)
而不是這樣做:
PersonInstance instance1 = new PersonInstance();
PersonInstance instance2 = new PersonInstance();
...
...
...
PersonInstance instance99 = new PersonInstance();
您可以使用array
來創建PersonInstance的所有70個實例,例如:
PersonInstance[] personInstances = new PersonInstance[N];
for(int i = 0; i < personInstances.length; i++){
personInstances[i] = new personInstances();
}
其中N
是可以存儲PersonInstance
實例的數組中的插槽數。 在您的情況下, N
為70:
PersonInstance[] personInstances = new PersonInstance[70];
for(int i = 0; i < personInstances.length; i++){
personInstances[i] = new personInstances();
}
然后,如果您想訪問PersonInstance號k
,則可以通過以下方式進行訪問:
PersonInstace thisPerson = personInstances[k-1];
由於數組從索引0開始,例如,如果您要訪問PersonInstance 56
,則可以通過以下方式進行操作:
PersonInstace thisPerson = personInstances[55];
希望能幫助到你。
更新的答案:
例如,如果BrotherInstance擴展了PersonInstance,則可以將BrotherInstance添加到PersonInstance數組中,例如:
PersonInstance[] personInstances = new PersonInstance[70];
//add 50 PersonInstances
for(int i = 0; i < personInstances.length-20; i++){
personInstances[i] = new PersonInstances();
}
//add 20 BrotherInstances
for(int i = 50; i < personInstances.length; i++){
personInstances[i] = new BrotherInstances();
}
並像這樣一個接一個地訪問它們:
PersonInstance currentPerson = personInstances[24] //A PersonInstance
PersonInstance currentBrother = personInstances[61] //A Brother instance
要么
BrotherInstance currentBrother = personInstances[61] //A Brother instance
或像這樣循環它們:
for(PersonInstance person: personInstances){
//Do something with every person here, maybe print out something.
}
該for-loop
將遍歷所有PersonInstance,無論它們是PersonInstance還是BrotherInstance,因為它們是PersonIntance或擴展PersonInstance。
您可以使用JAVA Reflection API , https://docs.oracle.com/javase/tutorial/reflect/member/ctorInstance.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.