无法将java.lang.Object转换为我创建的类

无法将java.lang.Object转换为我创建的类,java,Java,当一个类从列表返回时,调用我为它创建的方法时,我遇到了一个问题。我得到一个“java.lang.Object不能转换为Thing” 运行以下代码时出错 public class Test1 { public static void main(String args[]) { Thing whipersnaper = new Thing(30, "whipersnaper"); List storage = new List(); storage.insert(

当一个类从列表返回时,调用我为它创建的方法时,我遇到了一个问题。我得到一个“java.lang.Object不能转换为Thing” 运行以下代码时出错

public class Test1
{
  public static void main(String args[])
  {
    Thing whipersnaper = new Thing(30, "whipersnaper"); 
    List storage = new List();

    storage.insert(whipersnaper);

    Thing x = storage.getItem(0);

    x.doubleWeight();

    System.out.println(x.getWeight());
  }
}
这是“东西”类

最后是List类

public class List
{
  private Object[] itemList;
  private int size;

  public List()
  {
    this.itemList = new Object[10];
    this.size = 0;
  }

  public void insert(Object item){
    itemList[size] = item;
    size++;
  }

  public Object getItem(int index){
    return itemList[index];
  }
}
我需要列表能够容纳任何类型的对象,而不是唯一的对象。
我试着用谷歌搜索一个解决方案,但我找不到一个好方法来表达问题以获得答案。提前感谢。

更改该行
Thing x=storage.getItem(0)带有
对象x=(对象)存储.getItem(0)

更改该行
Thing x=storage.getItem(0)带有
对象x=(对象)存储.getItem(0)

您需要对其进行强制转换。该列表保存对象。一旦它出现在列表中,你就不知道它是什么,所以你需要投下它。类似于
Thing t=(Thing)storage.getItem(0)@Progman这不是泛型问题。他需要强制转换,因为他根本没有使用泛型(尽管在这种情况下,某种泛型列表将非常有用)。我同意@Progman,泛型是这里的解决方案。若并没有,那个么将列表更改为take Thing而不是object,您将收到编译器警告。注意他们。为什么要结束这个问题?它与泛型无关,而是显式转换。您需要转换它。该列表保存对象。一旦它出现在列表中,你就不知道它是什么,所以你需要投下它。类似于
Thing t=(Thing)storage.getItem(0)@Progman这不是泛型问题。他需要强制转换,因为他根本没有使用泛型(尽管在这种情况下,某种泛型列表将非常有用)。我同意@Progman,泛型是这里的解决方案。若并没有,那个么将列表更改为take Thing而不是object,您将收到编译器警告。注意他们。为什么要结束这个问题?它与泛型无关,而是显式转换。
Thing x = (Thing) storage.getItem(0);
Thing x = (Thing) storage.getItem(0);