我相信你们都知道我的意思 - 代码如下:
Thread thread = new Thread();
int activeCount = thread.activeCount();
Run Code Online (Sandbox Code Playgroud)
引发编译器警告.为什么不是错误?
编辑:
要明确:问题与Threads无关.我意识到在讨论这个问题时经常给出Thread示例,因为它们可能真的搞砸了它们.但问题确实是这样的使用总是无稽之谈,你不能(胜任地)写出这样的电话并且意味着它.这种类型的方法调用的任何例子都是barmy.这是另一个:
String hello = "hello";
String number123AsString = hello.valueOf(123);
Run Code Online (Sandbox Code Playgroud)
这使得它看起来好像每个String实例都带有"String valueOf(int i)"方法.
以下简单的代码片段工作正常,并使用null对象访问静态字段.
final class TestNull
{
public static int field=100;
public TestNull temp()
{
return(null);
}
}
public class Main
{
public static void main(String[] args)
{
System.out.println(new TestNull().temp().field);
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,System.out.println(new TestNull().temp().field);静态字段字段与NULL对象关联的语句new TestNull().temp()仍然返回正确的值100,而不是在Java中抛出空指针异常!为什么?
我试图将 a 转换List<String>为 a Map<T, String>,映射的值是前一个 中包含的元素List<String>,键是该元素的某个属性String(例如, 的长度String,在这种情况下,T实际上是 an Integer)。
我首先尝试这样做。这是我上面提到的示例的实现。我希望 的长度String成为键,而其String本身成为值。我想使用该Function::identity函数来明确指定该值是其String本身。
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
public class SOQ_ME_20220522_fail
{
public static void main(String[] args)
{
final List<String> list = List.of("apple", "banana", "coconut");
var result =
list.stream()
.collect(
Collectors.toMap(
each -> each.length(),
Function::identity
)
)
;
System.out.println(result);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译它时,出现以下编译错误。
SOQ_ME_20220522_fail.java:15: error: no suitable method found for toMap((each)->ea[...]gth(),Function::identity) …Run Code Online (Sandbox Code Playgroud)