[英]Java - Referencing an object with a variable
我試圖從 if 語句中實例化一個對象,基本上是用戶想要創建一個對象時的對象。 如果正在執行相同的代碼(使用不同的參數),那么對對象的引用將是相同的,所以......
您能否從不同的變量中引用該對象,例如在該對象的構造函數中創建的唯一 ID?
Test test1 = null;
if (run == true){
test1 = new Test(argument1);
test1 = test1.id;
}
我沒有經驗,但基本上想要一個來自對象的變量然后指向該對象,所以當一個新對象從再次執行的代碼實例化時它不會被覆蓋。
謝謝
我覺得您對 Java 中通常不會發生的場景進行了過度補償。
直接回答這個問題:除非您有一個數據結構(如Map<Integer, Test>
)跟蹤這些實例Map<Integer, Test>
否則您以后將無法使用對象的 ID 來引用該對象。
在您說明的場景中, test1
不為null
的唯一方法是您的測試條件是否通過。 除此之外,它有可能為null
並在以后導致運行時問題。 此外,如果test1.id
不是Test
的實例,則重新分配給test1
將失敗。
您不能在 Java 中動態命名變量。 我可以建議創建一個Test
變量List
嗎? 每次循環執行時,將變量添加到List
。 這樣您就可以引用所有已創建的對象。
創建新實例時不會覆蓋該實例,只會覆蓋您對該對象的引用。 如果要管理對象的多個實例,則必須跟蹤對它們的引用。 您可以在構建函數中保留一組對象引用或一組對象引用。 或者,您可以將對象引用返回給調用者並在那里跟蹤它。
你可能想在這里使用類似數組的東西
int count = 0;
Test[] tests = new Test[10];
if(run == true){
tests[count] = new Solution(argument1);
count++;
}
在這種情況下,我們為 10 個對象制作插槽,實際上任何數字都可以放入 10 所在的位置。 如果您不確定需要制作多少個對象,使用 ArrayList 之類的東西也可能是個好主意。
要從數組中獲取元素並使用對象,我們可以簡單地使用數組的名稱,后跟數組中它所在的位置。
tests[0].someMethod() //will call the method on the object at index 0
記住數組從零開始計數,所以如果你想要第二個元素,你必須要求索引 1 處的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.