gpt4 book ai didi

java - 没有类型不匹配 - 从原始 int 到 boolean 的转换

转载 作者:行者123 更新时间:2023-11-29 10:10:19 24 4
gpt4 key购买 nike

考虑来自 CopyOnWriteArrayList 的片段。

该方法的返回类型是primitive boolean,而返回的是primitive int。正在使用的反编译器是-

/* Eclipse Class Decompiler plugin, copyright (c) 2016 Chen Chao (cnfree2000@hotmail.com) */

public boolean add(E paramE) {
ReentrantLock localReentrantLock = this.lock;
localReentrantLock.lock();
try {
Object[] arrayOfObject1 = getArray();
int i = arrayOfObject1.length;
Object[] arrayOfObject2 = Arrays.copyOf(arrayOfObject1, i + 1);
arrayOfObject2[i] = paramE;
setArray(arrayOfObject2);
int j = 1;

return j; // ?????????
} finally {
localReentrantLock.unlock();
}
}

反编译器是否是错误的来源,因为所选行中的代码无法编译,还是有其他原因造成的?

如果您查看代码 here , 线条是-

414     public boolean More ...add(E e) {
415 final ReentrantLock lock = this.lock;
416 lock.lock();
417 try {
418 Object[] elements = getArray();
419 int len = elements.length;
420 Object[] newElements = Arrays.copyOf(elements, len + 1);
421 newElements[len] = e;
422 setArray(newElements);
423 return true;
424 } finally {
425 lock.unlock();
426 }
427 }

完全符合预期。

最佳答案

看起来确实如此。这是使用 Java Decompiler 反编译的以下代码(JRE 1.8.0_60)。

public boolean add(E paramE)
{
ReentrantLock localReentrantLock = this.lock;
localReentrantLock.lock();
try
{
Object[] arrayOfObject1 = getArray();
int i = arrayOfObject1.length;
Object[] arrayOfObject2 = Arrays.copyOf(arrayOfObject1, i + 1);
arrayOfObject2[i] = paramE;
setArray(arrayOfObject2);
return true;
}
finally
{
localReentrantLock.unlock();
}
}

关于java - 没有类型不匹配 - 从原始 int 到 boolean 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39846296/

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