我在Android应用程序的工作,我得到了这样的情况:实施某种“静态抽象继承”方法
-GenericOrderDetailFragment,扩展片段的抽象类。
- 这个类的三个非抽象“儿子”:LinesFragment,HeaderFragment,NoteFragment。
在三个儿子中有很多方法是相同的,所以我在抽象类上声明,这就是它存在的原因。
我被一个特别卡住了。到现在为止,我把这个方法儿子里面,它的伟大工程:
public class LinesFragment extends GenericOrderDetailFragment {
[...]
public static LinesFragment newInstance(Order o) {
LinesFragment fragment = new LinesFragment();
putSerializable(o, fragment);
return fragment;
}
[...]
}
这种方法是在所有的儿子一样,除了返回类型:LinesFragment应该返回LinesFragment例如,HeaderFragment应该返回HeaderFragment istance ......我想把这个作为父类一mustoverride,但我不能这样做,因为:
只要把
public static GenericOrderDetailFragment newInstance(Order o) {
GenericOrderDetailFragment fragment = new GenericOrderDetailFragment();
putSerializable(o, fragment);
return fragment;
}
方法不起作用,只是因为我不能istantiate一个GenericOrderDetailFragment(这是绝对的道)。我不能istantiate一个这 .getClass()项,“原因没有此:该方法是静态的!我不能声明一个“静态抽象”方法(在Java中,静态为“不可重复”,抽象为“mustoverride”,因此它们不能共存),所以我不能强制扩展GenericOrderDetailFragment的用户重写该方法。
如果我扩展这个泛型类,有一些方法我必须重写,所以我不能声明不抽象的父类。
是否可以使用任何解决方法?提前致谢!
哇,这个作品近乎完美,非常感谢!只有一点点注意:我必须_pass_类才能使它工作[OrderDetailNotesFragment.newInstance(_OrderDetailNotesFragment.class_,toSaveOrder); ]。有没有更紧凑的方式来写它? newIstance是静态的,所以我不能简单地通过自动方式_this_类,因为没有任何_this_!无论如何,谢谢! – 2014-10-06 13:43:55
@SimoneChelo不,我不知道在方法调用中省略类。你也必须告诉方法创建哪个类... – 2014-10-06 13:45:57
好吧,它也适用于这种方式!再次感谢! – 2014-10-06 13:46:48