2010-10-28 112 views
1

我有這樣的代碼在Java(的Andorid)(類類)Java類變量範圍問題

public class History extends Activity { 

public Integer Type; 

private static class HistoryAdapter extends BaseAdapter { 

     //I don't know how to access variable "Type" here 
    Integer num = Type;// error 
     . 
     . 
     . 
    } 
     . 
     . 
     . 

}

上面的 「延伸BaseAdapter」

我不能添加更多的類有人可以幫助我,我怎樣才能訪問類歷史記錄中的變量類型適配器

謝謝

+1

你是什麼意思你「不能在上面添加更多的類擴展BaseAdapter'?而且你不能從沒有外部類('History')的實例訪問另一個類的實例字段。 – 2010-10-28 00:55:22

回答

3

HistoryAdapter是一個靜態類,這意味着它無權訪問其父類History。你要麼不要使它不是靜態的(如果可能的話),要麼你需要通過輔助函數讓父類傳入值Type

例子:

public class History extends Activity { 
    public Integer Type; 

    private static class HistoryAdapter extends BaseAdapter { 

     Integer num; 

     HistoryAdapter(Integer num) { 
      this.num = num; 
     } 
    } 

    void foo() { 
     HistoryAdapter = new HistoryAdapter(Type); 
    } 
} 

public class History extends Activity { 

public Integer Type; 

private class HistoryAdapter extends BaseAdapter { 

    Integer num = Type; 
     . 
     . 
     . 
    } 
     . 
     . 
     . 
} 
1

如果你的內部類需要訪問包含類的領域,它具有不static ......那麼它將有訪問。或者,您可以給HistoryAdapter構建一個構造函數,該構造函數接受Integer type,並在創建它時將該類型從History傳遞給它。

此外,請不要在Java中使字段或變量的首字母大寫。