相关疑难解决方法(0)

java编译的类包含美元符号

我一直在使用Eclipse作为我的开发IDE.我还用它将我的应用程序导出到.jar文件中.当我在.jar文件中查看我的类时,我的一些类包含该类的名称,一个美元符号,然后是一个数字.例:

  • 查找$ 1.class
  • 查找$ 2.class
  • 查找$ 3.class
  • Find.class

我注意到它在更大的课程上做到这一点.这是因为这些类变得如此之大,它会将它编译成多个类吗?我用Google搜索并查看了多个论坛,并搜索了Java文档,但没有发现任何与之相关的内容.有人能解释一下吗

java compilation class

75
推荐指数
3
解决办法
4万
查看次数

获取Java lambda表达式的封闭类

我有一个采用功能参数的方法,例如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,getEnclosingMethodgetEnclosingConstructor,但他们都返回null.

有任何想法吗?

java lambda

11
推荐指数
2
解决办法
2661
查看次数

在调试 Java 代码时,@ 在 {Instance@789} 或 "SomeThread"@321: RUNNING 等语句中意味着什么?

当我调试时,“@”似乎无处不在。它们前面总是带有一些实例/变量名称,后面带有一个(通常是三位数字)数字。这是什么意思?我有下面的图片在此输入图像描述

取自https://medium.com/@andrey_cheptsov/intellij-idea-pro-tips-6da48acafdb7

java debugging

6
推荐指数
1
解决办法
722
查看次数

标签 统计

java ×3

class ×1

compilation ×1

debugging ×1

lambda ×1