[英]Java Object Oriented Design: Returning multiple objects in java
Java中的以下代碼引發Null指針異常。
public class New{
int i;
New(int i)
{
this.i = i;
}
public void func(New temp)
{
temp.i = 10;
temp = new New(20);
}
public static void main(String[] args)
{
New n = null;
n.func(n);
System.out.println("value "+ n.i);
}
}
原因是,java按值傳遞對象引用。 如果要返回一個對象,則可以從函數中返回它。
但是,如果我有多個對象,則返回對象引用的唯一方法是將它們保留在另一個對象中,就像有一個容器具有對所有對象的引用一樣。
有更好的方法嗎?
在C ++中,我通常只是傳遞指針的地址來處理這種情況。 如果我只想返回一個單一類型的兩個對象,則創建一個容器並傳遞它是一個致命的挑戰。
從一個函數返回多個對象有什么問題? 為什么不能在所有這些語言中更改函數的語義?
通常,您會創建一個對象來保存要返回的對象的組合。
對於更通用的解決方案,您可以返回集合,數組或某種元組,例如Pair,Triple等(您將需要創建后者)。
注意,通常不將可變對象作為參數傳遞,而是返回不可變的對象:
public Pair<Integer,Integer> getLowHighTemp() {
int low,hgh;
// do stuff...
return new Pair(low,hgh);
}
這是兩個多於一個的問題。
首先,您的代碼存在的問題是在使用n之前沒有聲明n。 那引發了異常。
其次,如果您想返回2個對象,則需要有一個容納2個對象的容器對象。
您可以返回某種Collection
。 返回Map
或List
很常見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.