有人能帮忙把这个简洁的Java函数解构成简单的英语吗?

有人能帮忙把这个简洁的Java函数解构成简单的英语吗?,java,xojo,Java,Xojo,我正在尝试将PriorityQueue类从移植到另一种没有类似数据结构的语言(Xojo)。我正在努力将以下方法分解为伪代码,以便将其转换为Xojo: public E poll(){ 最终目标[]es; 最终结果; if((result=(E)((es=queue)[0]))!=null){ modCount++; 最终整数n; 最终的ex=(E)es[(n=--大小)]; es[n]=null; 如果(n>0){ 最终比较器1-如果((结果=(E)((es=队列)[0])!=null) 首先,

我正在尝试将
PriorityQueue
类从移植到另一种没有类似数据结构的语言(Xojo)。我正在努力将以下方法分解为伪代码,以便将其转换为Xojo:

public E poll(){
最终目标[]es;
最终结果;
if((result=(E)((es=queue)[0]))!=null){
modCount++;
最终整数n;
最终的ex=(E)es[(n=--大小)];
es[n]=null;
如果(n>0){
最终比较器1-
如果((结果=(E)((es=队列)[0])!=null)

首先,它将数组
queue
分配给变量
es
,并从中获取元素
0
,将其转换为t
E
泛型类型,并将其分配给
result
,然后检查
result
是否为空

2-
final ex=(E)es[(n=--大小)];

首先java计算
--size
然后赋值给int type
n
,然后从
es
数组中获取
n
th,将其强制转换为
E
,然后将其赋值给变量
x



我想你问的下两行现在已经清楚了!让我们看看我是否能帮上忙:

if((result=(E)((es=queue)[0])!=null)

上面的意思是“将
队列
分配给
es
,访问其索引0,将其强制转换为类型
E
,将其分配给
结果
,如果不为空,则执行以下操作”

final ex=(E)es[(n=--大小)];

这意味着“从
size
中减去一个,并将新值赋给
n
,将其用作
es
的索引,并将该元素强制转换为
E
类型,然后将其赋给
E
类型的最终变量
x

最终比较器
这是否意味着“将数组队列分配给变量
es

并访问元素0,如果它不为null,则执行以下操作

result=(E)
表达式是什么意思

与上面的两个表达式同时,它还将
队列[0]
赋值给
结果
(E)
是对类型的强制转换。因此它基本上只是:

result = queue[0]
加上一些额外的东西

final ex=(E)es[(n=--size)];
?这是否意味着减量
size
,将该值分配给
n
,然后在
es
数组中访问该索引

如果是这样,那么这个表达式前面的
x=(E)
是什么意思?我猜它的意思是将元素强制转换为
E

是的,还是像以前一样的演员阵容

比较器
是一个类变量

为了学究的意思,
comparator
很可能是一个实例变量,而不是类变量。请检查它的定义

为什么要将其分配给局部变量
cmp

我想复制一个局部变量。我在代码中找不到这样做的好理由,所以这可能是一个错误,或者是以前的代码被更改后留下的东西

第一行的问号是什么意思


问号表示
比较器的类型未知,只要它是
E
的超类,就可以是任何类型。例如,如果
Integer
没有
Comparator
Number
有,那么没关系,
Number
Integer
的超类,这就是好的E不。

仅供参考,您正在移植的代码是根据GPLv2授权的。这对从它派生的软件(包括端口)有影响。请参阅,非常感谢您回答了各个问题并提供了明确的解释。我非常感谢。另一个+1链接指向本地分配的原因。这一个确实是错误的创立我。