public class test {
test(double[] a)
{
System.out.println("in double");
}
test(Object a)
{
System.out.println("in object");
}
public static void main(String args[])
{
new test(null);
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我传递null了构造函数参数.由于null可以是任何东西,上面的代码编译罚款.当我运行代码时,我希望它在对象中打印,但它以double形式打印
这背后的原因是什么?
注意链接的问题可能不重复,因为此问题与原始数据类型与对象相关
我想写一个JUnit测试来验证下面的代码使用BufferedInputStream:
public static final FilterFactory BZIP2_FACTORY = new FilterFactory() {
public InputStream makeFilter(InputStream in) {
// a lot of other code removed for clarity
BufferedInputStream buffer = new BufferedInputStream(in);
return new CBZip2InputStream(buffer);
}
};
Run Code Online (Sandbox Code Playgroud)
(FilterFactory是一个接口.)
到目前为止我的测试看起来像这样:
@Test
public void testBZIP2_FactoryUsesBufferedInputStream() throws Throwable {
InputStream in = mock(InputStream.class);
BufferedInputStream buffer = mock(BufferedInputStream.class);
CBZip2InputStream expected = mock(CBZip2InputStream.class);
PowerMockito.spy(InputHelper.BZIP2_FACTORY); // This line fails
whenNew(BufferedInputStream.class).withArguments(in).thenReturn(buffer);
whenNew(CBZip2InputStream.class).withArguments(buffer).thenReturn(expected);
InputStream observed = InputHelper.BZIP2_FACTORY.makeFilter(in);
assertEquals(expected, observed);
}
Run Code Online (Sandbox Code Playgroud)
对PowerMockito.spy的调用会引发此消息的异常:
org.mockito.exceptions.base.MockitoException:
Mockito cannot mock this class: class edu.gvsu.cis.kurmasz.io.InputHelper$1
Mockito can …Run Code Online (Sandbox Code Playgroud) 有没有办法replace在每次出现时使用正则表达式除了最后一个?
例如,我想"abc"成为"a|b|c".
我可以:
"abc".replace(/./g, "$&|");
Run Code Online (Sandbox Code Playgroud)
但结果是a|b|c|.有没有办法来替换除了最后一个之外的每一个事件?或者做n次出现,而不是全局做g?或者我是否以错误的方式思考这个问题?