如何创建具有列表的类,列表应包含两种不同类型的对象

时间:2012-04-25 15:23:39

标签: java

例如:

我有两种类型的对象:

public class Image {
...
}

public class Video {
...
}

我希望有一个包含这两个对象的列表的类,如下所示:

public class Media {

private List<Object> mediaList = new....
....
}

2 个答案:

答案 0 :(得分:3)

创建一个父类,让Image和Video成为其子类。

然后,您可以创建父类型列表。

import java.util.ArrayList;
import java.util.List;

public class Example
{
    public abstract ImageVideo
    {

    }

    public class Image extends ImageVideo
    {

    }

    public class Video extends ImageVideo
    {

    }

    public static class Media
    {
        public static void main( String args[] )
        {
            Image image = new Example().new Image();
            Video video = new Example().new Video();

            List<ImageVideo> mediaList = new ArrayList<ImageVideo>();

            mediaList.add( image );
            mediaList.add( video );
        }
    }
}

此外,以下编译,当您从列表中检索对象时,您只需要将对象强制转换。

import java.util.ArrayList;
import java.util.List;

public class Example
{
    public class Image
    {

    }

    public class Video
    {

    }

    public static class Media
    {
        public static void main( String args[] )
        {
            Image image = new Example().new Image();
            Video video = new Example().new Video();

            List<Object> mediaList = new ArrayList<Object>();

            mediaList.add( image );
            mediaList.add( video );
        }
    }
}

答案 1 :(得分:0)

创建父类。

 public abstract Class MediaFormat{
}

然后是子类

    public class Image extends MediaFormat{
...
}

    public class Video extends MediaFormat{
...
}

然后终于

    public class Media {
     private List<MediaFormat> mediaList = new List<MediaFormat>();
     ...
}

父类(MediaFormat)是抽象的。这样可以确保无法实例化MediaFormat。