如何投射两个物体

How to cast two objects

我是 java 的新人,我不知道如何解决这个问题。 我的问题是我有一个麻袋列表,每个堆栈都有人在里面,这些人是一个字符串(名字)。所以列表 -> 堆栈 -> 姓名为

的人

我的问题是我怎样才能得到这个名字?

((Stack)list.getObject() getObject 给了我列表中的当前对象(这有效)但我不知道名称:((Stack)list.getObject().(Person)stack.top().Name 是一个想法,但它是错误的

您的想法是正确的,但语法错误。试试这个方法:

Stack stack = (Stack) list.getObject();
Person person = (Person) stack.top();
String name = person.Name;

你只需要更多的括号,但更容易放在不同的行中。

((Person)((Stack)list.getObject()).stack).top().Name

另一种选择是:

((Person)((Stack)list.getObject()).top()).Name

然而,这并不是那么可读,所以让我们按照我们采取的步骤来分解它:

获取对象:

list.getObject()

将其转换为 Stack 对象:

(Stack)list.getObject()

在堆栈上调用 top()(注意最后一个括号,以便我们知道我们在调用它):

((Stack)list.getObject()).top()

将其转换为 Person 对象:

(Person)((Stack)list.getObject()).top()

检索 Name 字段(再次注意更多括号):

((Person)((Stack)list.getObject()).top()).Name

现在,至于可读性,我会更推荐 wassgren 的回答,但如果出于某种原因你绝对必须将此问题放在网上,那就是你的做法。