gpt4 book ai didi

JAVA:如何访问另一个对象的子类?

转载 作者:行者123 更新时间:2023-12-01 15:00:40 26 4
gpt4 key购买 nike

我有一个对象 VMemRead 的实例(我们称之为 r)。 VMemRead 的构造函数如下所示

VMemRead(SourcePos sourcePos, VVarRef dest, VMemRef source)

带有字段destsource。我知道当我想访问dest时,我可以执行r.dest。但是,我想“更深入”地了解源代码。

VMRef 有两个嵌套类 VMemRef.GlobalVMemRef.Stack。 VMemRef.Global 有构造函数

VMemRef.Global(SourcePos sourcePos, VAddr<VDataSegment> base, int byteOffset)  

我想访问int byteOffset。实际上,我想做 r.source.Global.byteOffset 之类的事情,但 Java 不允许我这样做。

有什么方法可以访问该值吗?

文档:VMem阅读:http://cs.ucla.edu/classes/spring11/cs132/kannan/vapor-parser/vapor-parser-javadoc/cs132/vapor/ast/VMemRead.html#source

VMemRef:http://cs.ucla.edu/classes/spring11/cs132/kannan/vapor-parser/vapor-parser-javadoc/cs132/vapor/ast/VMemRef.html

VMemRef.Global:http://cs.ucla.edu/classes/spring11/cs132/kannan/vapor-parser/vapor-parser-javadoc/cs132/vapor/ast/VMemRef.Global.html

非常感谢!

最佳答案

那些嵌套类是静态的。对于它们中的每一个,您都需要对实例的引用才能访问字段值。 VMemRef 的一个实例没有 VMemRef.Global 类型的(已记录的)成员字段或 VMemRef.Stack 。您必须寻找除 r 之外的其他地方来自这些类的数据。

换句话说,仅仅因为您有一个 VMemRef 的实例在 r ,这并不意味着存在 VMemRef.Global 的任何实例或 VMemRef.Stack大约。因此无法访问“那些值”,因为“那些值”不一定存在!

编辑重新阅读 API 后,我看到 VMemRef是一个抽象类并且 r.sourceVMemRef.Global 的一个实例或VMemRef.Static 。这改变了故事。你可以这样做:

if (r.source instanceof VMemRef.Global) {
VMemRef.Global source = (VMemRef.Global) r.source;
// access fields specific to VMemRef.Global
} else if (r.source instanceof VMemRef.Stack) {
VMemRef.Stack source = (VMemRef.Stack) r.source;
// access fields specific to VMemRef.Stack
}

关于JAVA:如何访问另一个对象的子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13696514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com