Java 奇异变量初始化错误
我对变量初始化有一个奇怪的问题 有以下代码:Java 奇异变量初始化错误,java,eclipse,Java,Eclipse,我对变量初始化有一个奇怪的问题 有以下代码: public void test() { StringBuilder buf; org.junit.Assert.assertFalse((buf = new StringBuilder("qwe3")).toString().isEmpty()); org.junit.Assert.assertEquals("", buf.toString()); // The local variable
public void test()
{
StringBuilder buf;
org.junit.Assert.assertFalse((buf = new StringBuilder("qwe3")).toString().isEmpty());
org.junit.Assert.assertEquals("", buf.toString()); // The local variable buf may not have been initialized
}
什么???变量已初始化,有什么问题
另外,当我将org.junit.Assert.assertFalse
更改为我自己的本地方法时,错误就会消失
private static void assertFalse(final boolean o) throws Exception
{
}
如果有必要的话,我正在使用JDK1.7.051。类别代码为注:现在报告为。
我已将您的问题缩减为MCVE:
package org.junit;
public class Assert {
public static void assertTrue(boolean b) {}
}
package test;
import static org.junit.Assert.assertTrue;
public class Test {
void test() {
int i;
assertTrue((i = 1) == 1);
assertTrue(i == 1);
}
}
只有在使用EclipseKeplerSR1编译时,我才能得到您的确切错误;使用javac
编译不会复制它
此外,将org.junit.Assert.assertTrue(布尔b)
更改为稍微不同的:
- 包名李>
- 类名李>
- 方法名称李>
- 方法签名
assertFalse
也有同样的问题,可能还有realAssert
类中的其他方法
结论:错误在Eclipse编译器中。这就是准确的代码,是逐字复制和粘贴的吗?你有另一台机器可以试着在上面复制吗?周围的代码有什么有趣的地方吗?(如果您能提供一个简短但完整的示例,我们可以逐字编译,这会有所帮助。)@JonSkeet我复制了它,它只需要一个JUnit依赖项。@JonSkeet,添加了到pastebin@MarkoTopolnik:您是否也在使用1.7.0_51?只是想知道确切的需求是什么…实际上与Eclipse编译无关。但好的一点,让我们看看javac。。。