gpt4 book ai didi

java - 方法中变量重复的目的是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:59:53 25 4
gpt4 key购买 nike

我在 Android 代码(以及其他一些代码源)中到处都看到了这个 [below]。它的意义或目的是什么?

class Foo {
int mBar = 1337;

static void main(String... args) {
System.out.println(isFubar());
}

boolean isFubar() {
int ret = mBar; // <--- Focus of attention

if (ret == 666)
return true;
else
return false;
}
}

这似乎是在浪费时间和资源。 mBar 显然没有被修改。它没有被修改的风险(在给定的上下文中),那么为什么要复制原语只是为了对其执行非侵入性检查并返回呢?

编辑 Android 源代码中 CellLayout 类的具体示例

public void cellToRect(int cellX, int cellY, int cellHSpan, int cellVSpan, RectF dragRect) {
final boolean portrait = mPortrait; <--- Here it is
final int cellWidth = mCellWidth;
final int cellHeight = mCellHeight;
final int widthGap = mWidthGap;
final int heightGap = mHeightGap;

final int hStartPadding = portrait ? mShortAxisStartPadding : mLongAxisStartPadding;
final int vStartPadding = portrait ? mLongAxisStartPadding : mShortAxisStartPadding;

int width = cellHSpan * cellWidth + ((cellHSpan - 1) * widthGap);
int height = cellVSpan * cellHeight + ((cellVSpan - 1) * heightGap);

int x = hStartPadding + cellX * (cellWidth + widthGap);
int y = vStartPadding + cellY * (cellHeight + heightGap);

dragRect.set(x, y, x + width, y + height);
}

最佳答案

也许用于多线程。如果 mPortrait 的值在以下两行之间发生变化,您将得到不同的结果。

final int hStartPadding = mPortrait ? mShortAxisStartPadding : mLongAxisStartPadding;
final int vStartPadding = mPortrait ? mLongAxisStartPadding : mShortAxisStartPadding;

例如:

final int hStartPadding = true ? mShortAxisStartPadding : mLongAxisStartPadding;
// somehwere else: mPortraint = false
final int vStartPadding = false ? mLongAxisStartPadding : mShortAxisStartPadding;

关于java - 方法中变量重复的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8361219/

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