gpt4 book ai didi

java - 我可以将匿名类或内部类编译成单个 java .class 文件吗?

转载 作者:行者123 更新时间:2023-12-01 19:25:56 26 4
gpt4 key购买 nike

我正在编写一个解析日志文件的 Java 类。编译后的.class文件需要加载到第三方监控平台(eG)中进行部署和调用。不幸的是,第 3 方平台只允许我上传单个 .class 文件。

我当前的实现有一个函数,可以在符合文件掩码(*CJL*.log)的文件夹中查找“最新”文件,并使用 2 个匿名类,一个用于过滤目录列表,另一个用于对列表进行排序基于 ModifiedDt 的文件。当我编译这个文件时,我得到了 3 个无法部署的 .class 文件(Monitor.class、Monitor$1.class、Monitor$2.class)。

是否可以将匿名类编译成单个.class文件以部署到第3方监控平台?

我附上了“查找最新文件”功能的代码以供说明。

private String FindLatestFile(String folderPath) {
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
if (name.endsWith(".log")
& name.contains("CJL"))
return true;
else
return false;
}
};

File dir = new File(folderPath);

File[] files = dir.listFiles(filter);

if (files.length > 0) {
Arrays.sort(files, new Comparator<File>() {
public int compare(File f1, File f2) {
return Long.valueOf(f1.lastModified()).compareTo(
f2.lastModified());
}
});

File newest = files[files.length - 1];

return newest.toString;
} else {
return "";
}
}

我认为可以通过获取原始文件列表并自己进行过滤/排序来以“愚蠢”的方式做到这一点,但我担心这不会提高性能。

有什么想法吗?

迈克尔

最佳答案

不,据我所知这是不可能的。我认为 jar 也不能使用。

解决方法是让该类实现两个接口(interface),以消除对内部类的需要。

    class MyClass implements FilenameFilter, Comparator<File> {
...

public boolean accept(File dir, String name) {
if (name.endsWith(".log") & name.contains("CJL"))
return true;
else
return false;
}

public int compare(File f1, File f2) {
return Long.valueOf(f1.lastModified()).compareTo(
f2.lastModified());
}

private String FindLatestFile(String folderPath) {

File dir = new File(folderPath);

File[] files = dir.listFiles(this);

if (files.length > 0) {
Arrays.sort(files, this);

File newest = files[files.length - 1];

return newest.toString;
} else {
return "";
}
}

关于java - 我可以将匿名类或内部类编译成单个 java .class 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/973229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com