Java 类型的方法未定义。帮我修一下
我创建了私有布尔方法isMp3(),但java告诉我,这种类型的方法没有定义Java 类型的方法未定义。帮我修一下,java,file,methods,boolean,Java,File,Methods,Boolean,我创建了私有布尔方法isMp3(),但java告诉我,这种类型的方法没有定义 if (directoryItem.isFile() && directoryItem.isMp3()){ resultListOfFiles.add(directoryItem); } 我不想对任何值进行沙化处理。 我想像布尔方法“isDirectory()”一样使用它。我知道,我做错了什么,请告诉我我的错误 private boolean isMp3(){ Pattern patt
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”语句?您将该方法声明为private,看起来您没有在类内部使用它。如果您将isMp3方法更改为public,这应该可以解决您的问题
如需更多信息,请参阅。正如@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);
}
出现编译器错误是因为
directoryItem
与您定义的isMp3
类(成员)的类型(类)不同。考虑一下isMp3
是否在一个有意义的类中定义,如果没有定义,则重构,因为这表明类设计很差。isMp3可能没有什么问题。请包括编译错误以及有关isMp3
方法定义位置的更多详细信息。您从何处调用此方法?私有意味着你不能从其他类中使用它,记住。。。包括子类。什么类型是directoryItem
?directoryItem是file,我在创建方法的类中使用此方法。我没有错误日志,请告诉我。@Rudik如果它是java.io.File
,您就不能对其调用isMp3()
(因为它不是文件的成员函数)。为什么不将文件
对象作为参数传递给方法?如果这是实际问题,那么编译器会说类似于“类型Classname中的方法isMp3()不可见”。当编译器抱怨该类型的方法未定义时,这意味着类中不存在此类方法。My bad。没有仔细阅读错误,直接跳入代码。