-3

我对 Java 有一个奇怪的问题(已解决)。我问这个是因为我很好奇那里发生了什么。

有什么区别:

if(Transfers.protoSendLong(output, date.getTime())){}

简单地说

Transfers.protoSendLong(output, date.getTime());

我看到的区别是第一个有效,第二个无效:S 执行有什么不同吗?

我认为您不需要知道 protoSendLong() 将要回答什么。如果您需要它,请询问。


编辑:

你有方法的代码here。这是我能给你的最多的。

public static boolean protoSendLong(ObjectOutputStream output, long x) {
    boolean r = false;

    try {
        output.writeLong(x);

        r = true;
    } catch (IOException ex) {
        Logger.getLogger(Transfers.class.getName()).log(Level.SEVERE, null, ex);
    }

    return r;

}

4

2 回答 2

2

就调用方法而言,这两个片段没有区别。在这两种情况下都会调用它。如果该方法在一种或另一种情况下没有达到您的预期,则与此代码段无关。

于 2013-10-24T11:24:46.040 回答
0

由于您在 if 语句中有函数调用,我们可以假设该函数

Transfers.protoSendLong

返回布尔值。

在代码中,

if(Transfers.protoSendLong(output, date.getTime()))
{
       "do something"
}

因此,仅当函数“Transfers.protoSendLong”返回 TRUE 时才执行“做某事”。如果它返回 false,则跳过“做某事”。

但万一,

Transfers.protoSendLong(output, date.getTime());

TRUE 或 FALSE 可能会返回,但不会改变代码流,因为没有 if 语句或任何变量来捕获它。

于 2013-10-24T10:34:57.120 回答