Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类型的方法未定义。帮我修一下_Java_File_Methods_Boolean - Fatal编程技术网

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

我创建了私有布尔方法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”语句?

您将该方法声明为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。没有仔细阅读错误,直接跳入代码。