Java异常堆栈跟踪有"$8",这是什么意思?



所以这不是我第一次看到异常消息,但我很好奇堆栈中的特殊字符是什么意思。我在Android中使用Java,这个异常在类名旁边显示一个$8,然后是发生异常的方法名。

我在研究,但找不到任何关于它意味着什么的信息。下面是我所指的堆栈和$8

java.lang.Exception: Error, server response 400
at cb.cheneytracker.service.callers.ServerCaller$8.onResponse(ServerCaller.java:858)
at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1$1.run(DefaultCallAdapterFactory.java:83)

因此,更准确地说,由于我被投票支持";需要细节或清晰度";。$在上面的异常堆栈跟踪中是什么意思。我看到$8$1$1,它们是什么意思?

这是匿名类的自动生成名称,它是8,因为容器类中至少有8个匿名类,你可以在这里看到它的作用:


interface Test {
void doSomething();
}
public static Test createTest() {
return new Test() {
@Override
public void doSomething() {
System.out.println("I'm busy...");
}
};
}
public static Test createAnotherTest() {
return new Test() {
@Override
public void doSomething() {
System.out.println("Ok");
}
};
}
public static void main(String[] args) {
Test t = createTest();
System.out.println(t.getClass().getName());
t = createAnotherTest();
System.out.println(t.getClass().getName());
}

正如我所知,它是编译器自动生成的匿名类的名称

最新更新