根据方法输入更改Object初始值设定项/构造函数

时间:2014-03-30 23:14:39

标签: java object constructor linked-list initialization

所以我试图避免使用重复的代码。目前我有几个包含字符串的列表;一个名单被称为"图像"和其他"视频"这些列表包含内容的属性,它们位于链接列表中,因为该信息是从文本文件中读取的。

我正在尝试浏览这些列表并创建图像/视频对象以放置在另一个对象中(稍后)。

目前我有一个方法

private void loadContent(List<String> contentType)

内部如何根据传递的列表名称更改对象声明等。例如: 如果我用图像列表调用方法:

loadContent(images)

我希望该函数能够创建图像对象:

Image media = new Image(title, visibility);

如果我通过了视频列表:

loadContent(videos)

我希望该功能能够创建视频对象:

Video media = new Video(title, visibility);

如果措辞严重,我很抱歉,我觉得很难说清楚这个问题。我也理解多态的概念;我根本没有看到内容对象完成这项工作(读取字符串等)是可行的,因为根据列表的内容创建了对象。

2 个答案:

答案 0 :(得分:0)

private void loadContent(List<String> content, int contentType)

您可以传入一个整数作为您提供媒体类型的ID。

然后你可以使用if / else语句只为某些内容类型做某些事情。

答案 1 :(得分:0)

你提出了多态性的主题。这种情况将是一个很好的候选人,以证明您对其工作原理的理解。您可以创建一个名为Media的抽象类,并定义一个名为Render()的方法。然后将Media类扩展为两个子类ImageMedia和VideoMedia。在每个子类扩展类Media的情况下,它们应该使用自己的如何呈现内容的实现来覆盖Render()方法。最后,您可以像这样拥有类型媒体列表:List&lt; Media&gt;并在每个上面调用Render()方法时迭代它。通过这种方式,您可以强加多态行为并大大简化代码。