【发布时间】:2013-02-28 01:47:09
【问题描述】:
你能创建一个继承java内置类所有功能的接口吗?
我想做什么:
我有很多扩展 Fragment 的类,在这些类中有一些属性(get、set)和一些函数。在制作了不同类的对象后,我将它们放在一个通用的片段列表中。
但我想介绍多态性:1 个接口类和所有其他类都实现了它,因此它们可以覆盖函数。
但问题是,如果我想使用多态性,我需要一个接口,并且接口应该是一个 Fragment,所以我仍然可以将这些 Fragment 放入一个列表中,所以我可以从 Fragment 类创建一个接口还是可以接口继承自片段?
在图片上你可以看到当前的情况
更新
这里有一些代码来显示我想要实现的目标:
所以我的主要功能是 xmlSAXParser,当我遇到标签时,我会创建一个正确类的对象:
case template:
switch (typeObjecten.toType(atType)) {
case NOVALUE:
break;
case chapter:
chapter = new ChapterFragment();
typeObject = "chapter";
break;
case execute:
execute = new ExecuteFragment();
typeObject = "execute";
break;
case first:
first = new FirstFragment();
typeObject = "first";
break;
...
当我找到结束标记时,我将正确的对象添加到列表中:
case template:
switch (typeObjecten.toType(typeObject)) {
case NOVALUE:
break;
case chapter:
fragments.add(ownFrag);
break;
case execute:
fragments.add(execute);
break;
case first:
fragments.add(first);
break;
case navigation:
fragments.add(navigation);
break;
case story:
fragments.add(story);
break;
....
也有可能在每个类中背景都可能发生变化,现在我必须检查对象是哪个类来调用正确的函数:
case background:
if (typeObject.equalsIgnoreCase("navigation")) {
navigation.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("chapter")) {
//chapter.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("first")) {
ownFrag.setBackgroundColor("#" + text);
first.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("execute")) {
execute.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("story")) {
story.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("intro")) {
intro.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("mission")) {
mission.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("question")) {
question.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("info")) {
info.setBackgroundColor("#" + text);
}
break;
...
所以如果我可以制作一个“全局”片段然后程序自己找出它必须从哪个类调用哪个函数(多态性?),那将是很好的(多态性?)
【问题讨论】:
-
interface SubFragment extends Fragment {...}? -
当你说“我想引入多态性”时,你具体想要它做什么?
-
@assylias 我收到一个错误:片段无法解析为类型
-
@Zutty 因为我解析 xml 并根据标签创建正确类的对象,然后设置属性。现在它有 15 个不同的类,它们表示对于每个标签,我必须检查 15 次它必须调用的函数,通过多态性,我可以让程序决定哪个函数
-
@GuntherVanGeetsom 是 Fragment 接口吗?
标签: java class interface built-in