2010-10-28 88 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中使字段或变量的首字母大写。