是否可以从抽象 class 调用方法?
Is it possible to invoke a method from abstract class?
我的摘要 class 如下:
AbstractFilePickerFragment.java
public abstract class AbstractFilePickerFragment<T> extends ListFragment
implements LoaderManager.LoaderCallbacks<List<T>>
....
....
public void GoBackToPreviousDirectory() {
currentPath = getParent(currentPath);
refresh();
}
}
OtherActivity.java
private AbstractFilePickerFragment<T> mAbstractFilePickerFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_ACTION_BAR);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
//THIS LINE SAYS "Cannot instantiate the type AbstractFilePickerFragment"
mAbstractFilePickerFragment = new AbstractFilePickerFragment();
}
public void GoBackToPreviousDir_onClick(MenuItem item) {
mAbstractFilePickerFragment.GoBackToPreviousDirectory();
}
}
是否有人可以从 AbstractFilePickerFragment 调用 GoBackToPreviousDirectory class???
我知道静态方法可以工作,但我不能为这种情况创建静态方法。
非常感谢您的帮助
没有。首先,您不调用 classes 中的方法。您调用 object 方法,因为对象是 class 的 instance。摘要class无法实例化。
为了调用非静态方法,您必须实例化class。
根据定义,抽象 classes 无法实例化。所以答案是否定的
如果您仍然需要访问该方法,您将必须创建一个扩展抽象 class 的 class 并实现 class 中的所有方法。然后你可以在你的程序中实例化扩展的 class 并调用该方法。
我的摘要 class 如下:
AbstractFilePickerFragment.java
public abstract class AbstractFilePickerFragment<T> extends ListFragment
implements LoaderManager.LoaderCallbacks<List<T>>
....
....
public void GoBackToPreviousDirectory() {
currentPath = getParent(currentPath);
refresh();
}
}
OtherActivity.java
private AbstractFilePickerFragment<T> mAbstractFilePickerFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_ACTION_BAR);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
//THIS LINE SAYS "Cannot instantiate the type AbstractFilePickerFragment"
mAbstractFilePickerFragment = new AbstractFilePickerFragment();
}
public void GoBackToPreviousDir_onClick(MenuItem item) {
mAbstractFilePickerFragment.GoBackToPreviousDirectory();
}
}
是否有人可以从 AbstractFilePickerFragment 调用 GoBackToPreviousDirectory class???
我知道静态方法可以工作,但我不能为这种情况创建静态方法。
非常感谢您的帮助
没有。首先,您不调用 classes 中的方法。您调用 object 方法,因为对象是 class 的 instance。摘要class无法实例化。
为了调用非静态方法,您必须实例化class。
根据定义,抽象 classes 无法实例化。所以答案是否定的
如果您仍然需要访问该方法,您将必须创建一个扩展抽象 class 的 class 并实现 class 中的所有方法。然后你可以在你的程序中实例化扩展的 class 并调用该方法。