小编Mal*_*alt的帖子

如何对使用Scanner和InputStream的方法进行单元测试?

所以这是代码:

public int foo(InputStream in) {
    int counter = 0;
    Scanner scanner = new Scanner(in);
    while(scanner.hasNextLine()) {
        counter++;
        scanner.nextLine();
    }
    return counter;
}
Run Code Online (Sandbox Code Playgroud)

通常,我会将FileInputStream传递给此方法,但是我希望能够在不访问物理文件的情况下对其进行测试。

我应该模拟File对象吗?如何实施

@Test
public void shouldReturnThree(){

}
Run Code Online (Sandbox Code Playgroud)

java unit-testing inputstream fileinputstream

2
推荐指数
1
解决办法
2391
查看次数

如何在java 8 stream api中初始化Collectors.toList()?

我想根据过滤器收集物品.但如果未找到匹配项,则不应初始化结果列表.我更喜欢null而不是空列表.

List<String> match = list
            .stream()
            .filter(item -> item.getProperty == "match")
            .collect(Collectors.toList());

if (match != null && !match.isEmpty()) {
    //handle seldom match
}
Run Code Online (Sandbox Code Playgroud)

问题:大多数时候我没有匹配,导致空集合.这意味着即使我不需要,列表也会在大多数情况下实例化.

java java-8 java-stream

2
推荐指数
1
解决办法
301
查看次数

获取 Java 中特定网络接口的名称

我正在使用 Windows 10,我想在我的计算机上插入一个设备(它创建了一个名为“Ethernet 12”和描述为“foobar”的新网络接口),并且能够使用 Java 设置该接口的 IP 地址。使用此链接:使用 JAVA 更改计算机 IP 地址,我可以配置接口的 IP 地址。我的问题是我无法在 Java 中检索设备创建的接口的名称。从我找到的文档中,我做了以下事情:

    Enumeration<NetworkInterface> networkInterfaces =  NetworkInterface.getNetworkInterfaces();

    while(networkInterfaces.hasMoreElements())
    {
        NetworkInterface networkInterface = networkInterfaces.nextElement();

        if (networkInterface.isUp())
            System.out.println("Display name: " + networkInterface.getDisplayName() + "\nName: " + networkInterface.getName() + "\nAddress: " + networkInterface.getInterfaceAddresses().get(0));
    }
Run Code Online (Sandbox Code Playgroud)

并得到以下结果:

    Display name: foobar
    Name: eth15
    Address 111.116.15.4
Run Code Online (Sandbox Code Playgroud)

我希望名称是“以太网 12”而不是“eth15”,这似乎没有任何意义。我注意到所有其他接口(wifi、以太网等)都一样。由于我需要我的接口(以太网 12)的真实名称来使用 netsh(而不是像“eth15”这样的随机地址)配置 IP 地址,我被卡住了......

是否有理由将“eth15”作为我的界面名称?

谢谢

java jvm network-programming network-interface

2
推荐指数
1
解决办法
1661
查看次数

为什么 Java 为堆大小选择 Xmx 和 Xms 命名约定?

根据在线描述,以下是 Java 中使用的与 Sizes 相关联的属性:

使用 -Xmx 指定最大堆大小

使用 -Xms 指定初始 Java 堆大小

使用 -Xss 设置 Java 线程堆栈大小

mx 和 ms 是什么意思?mx 是指最大值还是 ms 是什么意思?

java heap-memory heap-size

-1
推荐指数
1
解决办法
216
查看次数