gpt4 book ai didi

java - 重写匿名内部类方法不起作用

转载 作者:行者123 更新时间:2023-12-01 17:43:50 25 4
gpt4 key购买 nike

你能用这种方式重写一个方法吗?

public class test {

public static void main(String[] args) throws IOException {
File dir = new File("M:\\Java\\Test") {
@Override
public String[] list() {
String[] listA = super.list();
for (String s : listA) {
s = "test" + s;
}
return listA;
}
};
String[] listB = dir.list();
for (String s : listB) {
System.out.println(s);
}
}
}

我预计:

test1.txt
test10.txt
test2.txt
test3.txt
test4.txt
test5.txt
test6.txt
test7.txt
test8.txt
test9.txt

我收到:

1.txt
10.txt
2.txt
3.txt
4.txt
5.txt
6.txt
7.txt
8.txt
9.txt

我不能提出新问题,它涉及相同的代码,所以我会在这里问。嵌套方法重写是否导致编译器错误?

public class test {

public static void main(String[] args) throws IOException {
File dir = new File("M:\\Java\\Test") {
@Override
public String[] list() {
String[] listA = super.list(new FilenameFilter() {
@Override
public boolean accept(File file, String string) {
return string.contains(".txt");
}
});
for (int i = 0; i < listA.length; i++) {
listA[i] = "test" + listA[i];
}
return listA;
}
};
String[] listB = dir.list();
for (String s : listB) {
System.out.println(s);
}
}
}

我收到:

    Exception in thread "main" java.lang.StackOverflowError  
at java.io.File.list(File.java:1155)
at findmyorder.test$1.list(test.java:22)
at java.io.File.list(File.java:1155)
at findmyorder.test$1.list(test.java:22)
at java.io.File.list(File.java:1155)
at findmyorder.test$1.list(test.java:22)
at java.io.File.list(File.java:1155)
at findmyorder.test$1.list(test.java:22)
at java.io.File.list(File.java:1155)
at findmyorder.test$1.list(test.java:22)
at java.io.File.list(File.java:1155)
at findmyorder.test$1.list(test.java:22)
at java.io.File.list(File.java:1155)

它看起来像一些无限循环。添加FilenameFilter后出现问题到list()功能。这是嵌套@Override的结果吗?

最佳答案

您返回的是相同的列表。将您的 for 循环替换为:

        for(int i=0;i<listA.length;i++)
{
listA[i] = "test" + listA[i];
}

关于java - 重写匿名内部类方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57805162/

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