我创建了私有布尔方法isMp3(),但是java告诉我这个类型的方法是未定义的。
if (directoryItem.isFile() && directoryItem.isMp3()){
resultListOfFiles.add(directoryItem);
}
我不想对任何值进行处理。 我想像布尔方法'isDirectory()'一样使用它。我知道,我做错了,请告诉我我的错误。
private boolean isMp3(){
Pattern pattern;
final String FILE_PATTERN = "([^\\s]+(\\.(?i)(mp3))$)";
pattern = Pattern.compile(FILE_PATTERN);
Matcher matcher = pattern.matcher(this.toString());
if (matcher.find()){
return true;
}
else{
return false;
}
}
如果我正确使用“this”语句?
答案 0 :(得分:1)
正如@Claus建议的那样,如果你可以传递File对象,你就可以使它工作。这是正确的方法。
public class MyClass {
public boolean isMp3(File file) {
Pattern pattern;
final String FILE_PATTERN = "([^\\s]+(\\.(?i)(mp3))$)";
pattern = Pattern.compile(FILE_PATTERN);
Matcher matcher = pattern.matcher(file.toString());
if (matcher.find()) {
return true;
} else {
return false;
}
}
public void myMethod() {
File file = new File("file1.mp3");
if (isMp3(file)) {
System.out.println("is an MP3");
} else {
System.out.println("not an MP3");
}
}
}
在您的示例中,调用代码可能如下所示,
File directoryItem;
// you get 'directoryItem' from somewhere. directoryItem of type 'File'
if (directoryItem.isFile() && isMp3(directoryItem)) {
resultListOfFiles.add(directoryItem);
}
答案 1 :(得分:0)
您将该方法声明为私有,看起来您没有在类中使用它。如果将isMp3方法更改为public,则应解决您的问题。
有关详细信息,请参阅Controlling Access to Members of a Class。
答案 2 :(得分:0)
您收到编译器错误,因为directoryItem
与您isMp3
定义的类(成员)的类型(类)不同。想一想isMp3
是否在一个有意义的类中定义,如果没有,则重构,因为这会表明糟糕的类设计。