Java 如何从另一个类访问对象(例如ArrayList)?

Java 如何从另一个类访问对象(例如ArrayList)?,java,android,class,object,android-activity,Java,Android,Class,Object,Android Activity,我正在寻找一种允许我从另一个类访问对象的方法;这两个类都在同一个Android活动中——OpenStreeMapActivity.java。我有: ItemizeOverlay.java-包含我要访问和修改的对象: private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); 编辑:我发现返回//此处不是真的。在ItemizeOverlay中,创建一个提供对象的方法 public Lis

我正在寻找一种允许我从另一个类访问对象的方法;这两个类都在同一个Android活动中——OpenStreeMapActivity.java。我有:

ItemizeOverlay.java-包含我要访问和修改的对象:

private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();

编辑:我发现返回//此处不是真的。

在ItemizeOverlay中,创建一个提供对象的方法

public List<OverlayItem> getOverlays() {
  return this.mOverlays;
}
public List getOverlays(){
将此文件返回。mOverlays;
}

最好使用列表,这样,如果将来要更改实现,它不会影响其他地方的代码。

您可以通过以下方式使
BallooOverlayView
保留对
OverlayItem
对象列表的引用:

public class BalloonOverlayView{
 List<OverlayItem> items = null;
 public BalloonOverlayView(List<OverlayItem> items){
    this.items = items;
 }
 // Now you can use the ItemizedOverlay class from within this class as you wish
 public void addItem(OverlayItem item){
    items.add(item);
 }
 public void removeItem(OverlayItem item){
    item.remove(item);
 }
}
public类气球覆盖视图{
列表项=空;
公共视图(列表项){
这个项目=项目;
}
//现在,您可以根据需要在该类中使用ItemizeOverlay类
公共无效附加项(覆盖项项){
项目。添加(项目);
}
公共无效删除项(覆盖项项){
项目。移除(项目);
}
}

您不能将对象mOverlays作为方法setupView的参数传递吗?如果没有,在调用setupView之前,您仍然可以将其分配给BallookOverlayView类的公共属性,对吗?您的建议为我提供了项目
(例如items.getItem())
,但它不允许我执行
项目。添加(覆盖)
项目。删除(inDrag)
。我添加了
公共void addItem(项目){items.add(item);}
但是现在我得到一个错误,它说:“类型ItemizedOverlay的方法add(item)是未定义的”@kako13很高兴它成功了,请不要忘记+1并接受这一点作为您问题的答案:)您建议我更改列表的Arraylist?我如何在另一个类中调用getOverlays?this.mOverlays仍然可以是Arraylist。但是在公开数据时,将其指定为更通用的超类/接口可以让您更轻松地替换它,如果needed(如果您在某个时候决定使用自己的List实现而不是arraylist,则不需要在ItemizedOverlay之外进行任何更改)。关于另一个问题,显然您需要获取对要调用的对象的引用;您需要以类似的方式将引用传递给调用类。这是基本Java,如果您有困难,请在进入androidyou之前使用基本控制台程序对其进行测试,
private List mOverlays=new arrayList();
优先于
私有ArrayList mOverlays=new ArrayList();
。另外,我明白了,我应该从另一个类中得到一个要操作的对象的引用。谢谢。顺便说一句,我喜欢你的昵称,它还记得我吗。
public class BalloonOverlayView{
 List<OverlayItem> items = null;
 public BalloonOverlayView(List<OverlayItem> items){
    this.items = items;
 }
 // Now you can use the ItemizedOverlay class from within this class as you wish
 public void addItem(OverlayItem item){
    items.add(item);
 }
 public void removeItem(OverlayItem item){
    item.remove(item);
 }
}