这是A类
public ClassA {
public ArrayList<AppDetail> apps;}
这里是B类,我必须访问B类中没有静态关键字的公共方法“apps”。
public class AppsListActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_apps_list);
}}
答案 0 :(得分:1)
这取决于您在apps
中填充数据的方式。通常,您将在ClassA
中创建ClassB
的实例,并使用getter / setter方法来调整值:
public ClassA {
private ArrayList<AppDetails> apps;
public ClassA() {
apps = new ArrayList<>();
}
public ClassA(ArrayList<AppDetails> apps) {
if (apps != null) {
this.apps = apps;
} else {
this.apps = new ArrayList<>();
}
}
public void setApps(ArrayList<AppDetails> apps) {
this.apps = apps;
}
public ArrayList<AppDetails> getApps() {
return apps;
}
然后在ClassB
中创建一个实例:
ClassA classA = new ClassA();
并在classA
上使用getter / setters方法。
但是,如果要在单独的ClassA
中创建Activity
实例以便从那里检索数据,则此方法将不起作用,因为存储在一个实例中的任何数据都不会出现在ClassB
中创建的新内容中。
答案 1 :(得分:1)
未标记为static
的变量称为实例变量或实例字段。顾名思义,您需要该类的实例才能访问它。您可以像这样创建一个ClassA实例:
ClassA a = new ClassA();
然后您可以像这样访问它:
a.apps
但是,建议不要标记变量/字段public
。你应该标记它private
并编写一个getter方法和一个setter方法(可选)来访问它或设置它的值:
//getter
public ArrayList<AppDetails> getApps () {
return apps;
}
//setter
public void setApps (ArrayList<AppDetails> apps) {
this.apps = apps;
}
答案 2 :(得分:1)
如果A类是POJO(普通旧Java对象),您可以实例化它并提供getter和setter。
ClassA.java
public ClassA {
public ArrayList<AppDetail> apps;
public ArrayList<AppDetail> getApps(){
// other codes....
return this.apps;
}
public void setApps(ArrayList<AppDetail> apps){
// other codes....
this.apps = apps;
}
}
来自其他班级:
ClassA classA = new ClassA();
// some codes....
// classA.getApps(); // returns the value of apps for classA instance
答案 3 :(得分:0)
如果需要,创建一个构造函数。并调用类似
的内容ClassA a = new ClassA();
并用作:
a.apps;