如何调用包含数组的方法

时间:2014-01-12 18:17:26

标签: java

在这里完成初学者。我试图从类中调用一个方法来在主类中运行。但我似乎无法弄清楚为什么它不起作用。这是我如何调用类

public static void main(String[] args) {
      findMP3Tracks FT = new findMP3Tracks();
      FT.findMP3();

这是我想要调用的类方法

public static List<String> findMP3(String p)
{
    List<String> foundMP3Tracks = new ArrayList<>();

    try (DirectoryStream<Path> folderContents = Files.newDirectoryStream(Paths.get(p))) 
    { 
        //Look for 
        for (Path folderItem: folderContents){ 
 if(Files.isDirectory(folderItem, LinkOption.NOFOLLOW_LINKS)) {
                foundMP3Tracks.addAll(findMP3(folderItem.toString()));
            }
            else if(isValidMP3(folderItem.toString())) {
                foundMP3Tracks.add(folderItem.toString());
            }
        }
    } 

4 个答案:

答案 0 :(得分:3)

假设findMP3(String)是课程findMP3Tracks中的一种方法(我建议您关注Java conventions for class names),您可以在主要方面将其称为:

public static void main(String[] args) {
      ...
      List<String> result = findMP3Tracks.findMP3("Name of MP3");
}

您可以使用类findMP3Tracks的名称来调用方法findMP3,因为它被声明为静态。因此,没有必要创建一个实例来调用它。 (当然,您可能希望为其他操作创建该类的实例)

此外,由于findMP3返回List<String>,您可能希望将其存储在变量中(在示例result中)

答案 1 :(得分:0)

首先,您不需要实例来调用静态方法,所以这一行

findMP3Tracks FT = new findMP3Tracks();

没用,你可以删除它。

使用(例如)

findMP3Tracks.findMP3("Some MP3 name");

您还需要获取返回值,因此它应该是:

final List<String> mp3List = findMP3Tracks.findMP3("Some MP3 name");

PS:在Java中按惯例类名以大写字母开头,我建议你将findMP3Tracks类名更改为FindMP3Tracks

答案 2 :(得分:0)

您已将方法声明为

public static List<String> findMP3(String p)

这意味着(除其他外)当你调用它时,你将传递一个String参数。但你写了

FT.findMP3();

你根本没有传递任何论据。像

这样的东西
FT.findMP3("Hello");

会编译;或者如果您有一个String变量,其值是您要搜索的MP3的名称,您也可以使用它。但是对任何方法的调用必须与该方法的声明匹配。

答案 3 :(得分:-1)

方法findMP3被声明为静态。静态变量和方法是类的成员。

您可以使用classname直接调用它。所以,它应该是findMP3Tracks.findMP3()

另外,关于静态方法的一个词。如果您确实知道方法的行为对于不同的实例不同,那么您可以/可以将其声明为静态。虽然,这是一个设计决定,你会做。如果基于传入的参数确实表现不同,那么最好有一个不静态的方法。