小编Eri*_*son的帖子

为什么Java更喜欢调用双构造函数?

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形式打印 这背后的原因是什么?

注意链接的问题可能不重复,因为此问题与原始数据类型与对象相关

java constructor

13
推荐指数
2
解决办法
1397
查看次数

在匿名类中测试方法时,如何使用Powermockito来模拟新对象的构造?

我想写一个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)

java anonymous-class mockito powermock object-construction

7
推荐指数
2
解决办法
4万
查看次数

JavaScript取代正则表达式每次出现但最后?

有没有办法replace在每次出现时使用正则表达式除了最后一个?

例如,我想"abc"成为"a|b|c".

我可以:

"abc".replace(/./g, "$&|");
Run Code Online (Sandbox Code Playgroud)

但结果是a|b|c|.有没有办法来替换除了最后一个之外的每一个事件?或者做n次出现,而不是全局做g?或者我是否以错误的方式思考这个问题?

javascript regex

0
推荐指数
1
解决办法
80
查看次数