2013-04-04 104 views
0

如何使以下方法返回character array我該如何讓這個方法返回一個數組?

public char[] startThread() { 
    // arr declaration 
    Runnable r = new Runnable() { 
     @Override 
     public void run() { 
      arr = getArray(); // arr assignment 
     } 
    }; 
    new Thread(r).start(); 
    return arr; 
} 

char arrNew[] = startThread(); 

注:上面的代碼生成錯誤

+1

錯誤是什麼? – CAMOBAP 2013-04-04 08:26:30

回答

0

你不能做到這一點。

當你從你的方法返回時,你沒有你的char數組。它尚未創建。所以,分配作爲參考將不起作用。 Callable都不會對此有所幫助。

你可以做的是,你創建一個持有者對象,並返回(這是非常相似的Future對象):

public static class ArrayHolder { 
    public char[] arr; 
} 

public ArrayHolder startThread() { 

    final ArrayHolder holder = new ArrayHolder(); 

    Runnable r = new Runnable() { 
     @Override 
     public void run() { 
      holder.arr = getArray(); // arr assignment 
     } 
    }; 
    new Thread(r).start(); 
    return holder; 
} 

ArrayHolder h = startThread(); 
char arrNew[] = h.arr; 

通知書的,h.arr會隨時間而改變,所以你第一次稱它很可能會返回null

+1

有關最終變量的想法是,你不能分配給他們...... – 2013-04-04 08:29:31

+0

我不能分配給最終變量。你看到函數調用嗎? – 2013-04-04 08:30:25

+0

您不能從Runnable內部爲arr分配一個新的值,所以這個例子不會工作。 – 2013-04-04 08:32:43

相關問題