我一直在使用Eclipse作为我的开发IDE.我还用它将我的应用程序导出到.jar文件中.当我在.jar文件中查看我的类时,我的一些类包含该类的名称,一个美元符号,然后是一个数字.例:
我注意到它在更大的课程上做到这一点.这是因为这些类变得如此之大,它会将它编译成多个类吗?我用Google搜索并查看了多个论坛,并搜索了Java文档,但没有发现任何与之相关的内容.有人能解释一下吗
我有一个采用功能参数的方法,例如a Runnable.由于它是一个库方法,我希望它使用从函数参数派生的记录器.调用getClass函数参数适用于普通类,我可以getEnclosingClass用于嵌套或匿名类; 但如果它是一个lambda表达式,它会返回一个含有的模糊名称$$Lambda$,我可以像这样手动剥离:
Class<?> type = runnable.getClass();
String canonical = type.getCanonicalName();
int lambdaOffset = canonical.indexOf("$$Lambda$");
if (lambdaOffset > 0) {
try {
type = Class.forName(canonical.substring(0, lambdaOffset));
} catch (ClassNotFoundException e) {
// strange, but we can stick to the type we already have
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,这不是很优雅,也可能不便携.我试过getEnclosingClass,getEnclosingMethod和getEnclosingConstructor,但他们都返回null.
有任何想法吗?
当我调试时,“@”似乎无处不在。它们前面总是带有一些实例/变量名称,后面带有一个(通常是三位数字)数字。这是什么意思?我有下面的图片
取自https://medium.com/@andrey_cheptsov/intellij-idea-pro-tips-6da48acafdb7。