java 非静态类中 宣言该类的静态类实例 其他类中 为什么能够不实例就能调用 该类的非静态方法
java 非静态类中 声明该类的静态类实例 其他类中 为什么能够不实例就能调用 该类的非静态方法
public class FirstGroup extends ActivityGroup{
public static FirstGroup group;
private ArrayList<View> history;
public void launch(String id, Intent intent){
addHistory(setContent(id,intent));
}
private void addHistory(View view)
{
history.add(view);
}
}
另一个类中
public class ListActivity extends BaseActivity{
mListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
FirstGroup.group.launch("DetailActivity", DetailActivity.launch
(ListActivity.this, temp));
}
});
}
怎么可以直接这样调用呢FirstGroup.group.launch() 这样可以吗?
------解决方案--------------------
你要知道static的变量或方法都是类加载后就可以用的,不必调用构造函数生成对象,此时history是空的
你这样写,程序走到访问history那里会空指针
public class FirstGroup extends ActivityGroup{
public static FirstGroup group;
private ArrayList<View> history;
public void launch(String id, Intent intent){
addHistory(setContent(id,intent));
}
private void addHistory(View view)
{
history.add(view);
}
}
另一个类中
public class ListActivity extends BaseActivity{
mListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
FirstGroup.group.launch("DetailActivity", DetailActivity.launch
(ListActivity.this, temp));
}
});
}
怎么可以直接这样调用呢FirstGroup.group.launch() 这样可以吗?
------解决方案--------------------
你要知道static的变量或方法都是类加载后就可以用的,不必调用构造函数生成对象,此时history是空的
你这样写,程序走到访问history那里会空指针