无法将java.lang.Object转换为我创建的类
当一个类从列表返回时,调用我为它创建的方法时,我遇到了一个问题。我得到一个“java.lang.Object不能转换为Thing” 运行以下代码时出错无法将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(
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);