2012-04-25 104 views
1

。例如:如何創建類,即中有一個列表,該列表應該包含兩個不同類型的對象

我有兩個類型的對象:

public class Image { 
... 
} 

而且

public class Video { 
... 
} 

我想要一個類將包含這兩個對象的單個列表,如下所示:

public class Media { 

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

您可以將媒體制作爲圖像和視頻的父類,然後您可以製作一個容器類,其中包含一個List 集合。 – scrappedcola 2012-04-25 15:26:25

回答

3

創建一個父類,並讓圖像和視頻成爲它的子項。

然後,您可以創建父類型的列表。

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); 
     } 
    } 
} 
+0

另一種選擇是創建一個接口。 '實現MediaType'。 – user717572 2012-04-25 15:29:05

+0

謝謝你非常清楚的解釋。它像魅力:) – aki 2012-04-25 18:07:24

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不能被實例化abstract.That方式。

+0

也謝謝你的解釋。 – aki 2012-04-25 18:07:46

相關問題