实现java.io.Serializable的两种类型的Arraylist

0 java serializable

例如,我有:

    public class Class1 implements Serializable {
       private static final long serialVersionUID = 1L;
       private int a;
       private int b;

       /*Getters and setters here*/
       public int getA();
    }

    public class Class2 implements Serializable {
       private static final long serialVersionUID = 1L;
       private int a;
       private int b;

       /*Getters and setters here*/
       public int getA();
    }
Run Code Online (Sandbox Code Playgroud)

现在我想制作这两种类型的ArrayList.这就是我正在尝试的:

List<Serializable> list= new ArrayList<Serializable>();
Run Code Online (Sandbox Code Playgroud)

我有一个返回Serializable的方法,它返回列表中的对象:

  public Serializable get(int i)
{
    return list.get(i);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用上面两个类中的getter方法(类似于list.get(0).getA())时,会出现一个错误,即没有为Serializable定义getA()方法.我错过了一些简单的东西吗?为了使用getter方法,我应该如何使用上述方法的返回类型?谢谢.

Tim*_*m B 5

这两个类都是Serializable,但Serializable没有定义任何方法.

您需要自己定义包含getA()方法的基类或接口,然后您可以使用它来引用它们.

请记住,虽然在这种情况下,您拥有的只有Seri​​alizable类Class1,Class2但在大多数情况下,您无法保证这一点.可能有另一个Class3实现Serializable但没有该方法getA.