簡體   English   中英

面向Java對象的設計:在Java中返回多個對象

[英]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 返回MapList很常見。

暫無
暫無

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

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