at MyActivity.formatDouble(MyActivity.java:182)
at MyActivity.access$47(MyActivity.java:196)
at MyActivity$28.onCameraChange(MyActivity.java:167)
“MyActivity”是一项活动,因此不是匿名的内部类.我不能确定#3线上的美元符号(以及第2行中的美元符号)
解决方法:
我怀疑第167行是在MyActivity中的匿名类中,并且访问$47只是一个trampoline方法,允许onCameraChange在MyActivity中调用私有方法. (JVM不允许这样做,因此Java编译器会创建一个允许它的方法.)
您甚至可以使用简单的Java类轻松地看到这一点:
public class Test {
private static void privateMethod() {
throw new RuntimeException();
}
public static void main(String[] args) throws Exception {
Runnable runnable = new Runnable() {
@Override public void run() {
privateMethod();
}
};
runnable.run();
}
}
这给出了一个类似于你所示的堆栈跟踪:
Exception in thread "main" java.lang.RuntimeException
at Test.privateMethod(Test.java:4)
at Test.access$000(Test.java:1)
at Test$1.run(Test.java:10)
at Test.main(Test.java:13)
Test $1.run位于main中的匿名内部类中,访问$000方法提供对privateMethod的访问.
标签:java,android,debugging
来源: https://codeday.me/bug/20190612/1226814.html