[英]java.lang.object cannot be converted to (selfmade class)
我是java的新手,刚刚在uni完成编程基础知识,所以我很欣赏任何答案的详尽解释。 谢谢。 顺便说一下,我使用BlueJ作为我大学培训的一部分,这可能是相关的。
无论如何,这是问题所在; 我为我的一个任务做了一个文本冒险,它是非常程序化设计的,所以我决定将它改造成一个更面向对象的程序。 我认为你需要知道的只有4级'(一些不重要的位被遗漏,否则这将是页面长,但如果你认为它们很重要,请告诉我);
库存
static room room;
public inventory(room room)
{
this.room = room;
}
public static room getRoom()
{
return room;
}
房间
ArrayList <object> objects = new ArrayList <object>();
public ArrayList getobjects()
{
return objects;
}
宾语
ArrayList<String> names = new ArrayList<String>();
public ArrayList getNames()
{
return names;
}
textparse(textparse有一个textparse方法)
public static void textparse(String line)
{
if (line.indexOf(" ") != -1){
int space = line.indexOf(" ");
noun = line.substring(space + 1, line.length()).toLowerCase();
verb = line.substring(0, space).toLowerCase();
}
else
verb = line;
verbparse();
}
这是问题所在; 房间里面有一个物体的arraylist,对象有一个名字的arraylist,玩家可以调用它们。 这是我的代码,试图检查textparse类先前识别的名词是否与任何对象的名称匹配。 顺便说一下,这是在textparse类中;
public static object nounparse()
{
for (int counter = 0; counter < inventory.getRoom().getobjects().size(); counter++)
{
object current = inventory.getRoom().getobjects().get(counter);
if (current.getNames().contains(noun)){
return current;
}
}
return null;
}
它返回错误'不兼容的类型:java.lang.Object无法转换为对象'引用此行
object current = inventory.getRoom().getobjects().get(counter);
我不确定为什么它认为这是一个对象的输出,但由于我在该领域的经验有限,我甚至不确定一个对象是什么除了一个类的实例的一般分类器。 任何帮助,将不胜感激。 谢谢!
您的错误的具体来源是向下倾斜。 inventory.getRoom().getobjects().get(counter)
的返回类型似乎是ArrayList 。 ArrayList
在Java中的类型为Object
,但您的小写object
似乎是一个新的类定义,它不是ArrayList
的超类或接口。 您可以将其称为ArrayList
或List
或Collection
或Object
(请注意大小写),但您尝试为其指定类型object
。
有关使用超类类型的更多信息,请搜索有关Java继承的教程。
如果您的对象类型确实与ArrayList
兼容,您可以键入将其ArrayList
转换为object
类型,如:
object current = (object) inventory.getRoom().getobjects().get(counter);
但是,我严重怀疑在这种情况下会起作用,几乎肯定不是你想要的; 除非你知道你在做什么,否则不要使用类型转换。 :)我只为你提供这方面的更多关于类型转换的研究,以便更好地理解它。
此外,您需要快速查看有关类名称大写的java编码约定以及对变量和方法名称使用camelCase; 它会让你的代码更具可读性。
您缺少通用参数。 你的getRooms()
应该返回ArrayList<object>
,如果这是你想要的行为。
此外,您应该将object
重命名为其他内容,例如Thing
和Item
,否则可能会导致混淆,拼写错误,读取错误(即您可能以后认为您写的是O bject not o bject)等等。所有类名也被推荐写在大骆驼案中 。
Java Generics: Oracle.com上的Java泛型教程
Java命名约定:(懒得找一个,看@DanielWiddis的答案)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.