C# 代码将 void 作为参数传递? Java 里的是什么?

C# code passing void as argument? What's that in Java?

我正在将一个小程序从 C# 翻译成 Java。 我还想知道 1 行:

Thread eventReadingThread = new Thread(() => ReadEvents(url, streamingMode));
...
        static void ReadEvents(String serviceURL, bool streamingMode)
    {
        if (streamingMode)
        {
            WebRequest httpClient = WebRequest.Create(serviceURL);
            httpClient.Method = "GET";
            byte[] buffer = new byte[4096];
...

我把这里的第一行解释为"True if ReadEvents returns less than empty array"。然而,这没有任何意义,因为 void 参数无法编译,而且布尔参数不适合 Thread 的构造函数。

这在 Java 中会是什么?

首先,

static void ReadEvents

并不意味着 ReadEvents return 在任何情况下都是正确的。 void 关键字表示该方法没有 return(就像 VB 中的 Sub)。

其次,您将数组定义为:

byte[] buffer = new byte[4096];

byte 的默认值为 0,因此您实际上没有一个空数组,而是一个 4096 字节的数组,值为 0。除非代码中的某个地方(您没有显示)将数组重新定义为 byte[] 或 null.

What would it be in Java?

在 Java 8 中,您只需将 => 变为 ->

{
    Thread thread = new Thread(() -> readEvents(url, streamingMode));
}

static void readEvents(String serviceUrl, boolean streamingMode) {
    // ...
}

I interpret the first line here as .... What is the code trying to do?

您需要阅读调用方法 readEventslambda expressions (Java, C#). In this case it is "create me a Runnable or ThreadStart