2015-04-05 65 views
1

我想將4個數組從A類中的方法傳遞到B類中的方法。 我在類B中的方法中創建類A的實例以獲取數組。在Java中清除多維對象

一個類中的方法被定義爲對象[]和使用:

return new Object[]{Array1,Array2,Array3,Array4}; 

返回陣列。

在B級的方法,我得到一個對象數組定義爲:我成功取回陣列

private Object outGeoObj[] = new Object[4]; 

,但我要清除的對象之前,我再次使用它。我試過:

public void ClearValues(){ 
    if (outGeoObj != null){ 
     outGeoObj = null; 
    } 
    else{ 
     System.out.println("Object is null"); 
    } 
} 

但它不起作用。有什麼建議麼?

最小工作示例:B

類:

public class MainFem { 

private OutGeoMesh outmesh; 
private Object outGeoObj[] = new Object[4]; // [0: Xmpoint, 1: Ympoint, 2: Vec, 3: numpoints] 


public MainFem() { 
    outmesh = new OutGeoMesh(); 
} 

public void ClearValues(){ 

    if (outGeoObj != null){ 
     for(int i = 0; i < outGeoObj.length; i++) { 
      outGeoObj[i] = null; 
     } 
    } 
    else{ 
     System.out.println("Object is null"); 
    } 

} // END Method ClearValues 



public void MainStart(int Xpoint[][], int Ypoint[][], int nump[], int c2, int Line[][][], DrawPanel drawPanel){ 

    outGeoObj = outmesh.createOutGeomesh(Xpoint, Ypoint, nump, c2, Line, drawPanel); 

    int temp = (int[][]) outGeoObj[3]; 
    System.out.println(temp[0][0]); 

    }// End Method MainStart 
} // END CLASS MainFem 

A類:

public class OutGeoMesh { 

private double Xmpoint[][][] = new double[500][200][20]; 
private double Ympoint[][][] = new double[500][200][20]; 
private double Vec[][][] = new double[500][2][20]; 
private int numpoints[][] = new int[500][20]; 

public OutGeoMesh() { 
    // TODO Auto-generated constructor stub 
} 

public Object[] createOutGeomesh(int Xpoint[][], int Ypoint[][], int nump[], int c2, int Line[][][], DrawPanel drawPanel) { 

    for (int j = 0; j <= c2; j++) { 
     for (int i = 0; i < nump[j]; i++) { 

      Vec[i][0][j] = i; 
      Vec[i][1][j] = i+1; 

      Xmpoint[i][0][j] = Xpoint[i][j]; 
      Ympoint[i][1][j] = Ypoint[i][j]; 

      numpoints[i][j] = numpoints[i][j] + 1; 

     } // END FOR i 

    } // END FOR j 


return new Object[]{Xmpoint,Ympoint,Vec,numpoints}; 

} // END METHOD createOutGeomesh 
// --------------------------------- 

} // END CLASS OutGeoMesh 
+0

從問題中看不出真正的問題_A類和B類的相互作用以及實際問題是什麼?如果您從相關類中發佈了更多代碼,這將有所幫助。 – 2015-04-05 21:21:15

+0

你是什麼意思,它不起作用?從你的代碼顯示的內容來看,你並沒有清除這些值,你只是簡單地使'outGeoObj == null'。我認爲你想重置所有的值,所以你可以做'outGeoObj = new Object [outGeoObj.length];'。或者你可能想清除數組中的數組,所以對數組中的每個數組使用'for循環'作爲'outGeoObj',然後使用'嵌套for循環',並相應地設置它們的值。 – CoderMusgrove 2015-04-05 21:22:14

+0

循環訪問數組,將值賦給空值? – ElDuderino 2015-04-05 21:23:59

回答

1

你需要做這樣的事情:

Arrays.fill(outGeoObj, null); 

您的代碼不起作用的原因是因爲您只是擦除對數組的引用,但代碼的其他部分仍使用相同的數組。通過使用Arrays.fill,您可以擦除陣列的內容。