2014-01-12 10 views
0

완전한 초보자는 여기에. 클래스에서 메소드를 호출하여 주 클래스에서 실행하려고합니다. 그러나 그것이 왜 효과가 없는지를 알 수는 없습니다. 여기에, I 클래스배열을 포함하는 메서드를 호출하는 방법

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

이 내가

findMP3(String) 가정
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()); 
      } 
     } 
    } 
+0

어떤 오류가 발생했는지 게시해야합니다. – Magnilex

답변

3

(나는 Java conventions for class names을 따라 당신을 추천 할 것입니다) 클래스 findMP3Tracks 내부의 방법으로 호출 할 클래스의 방법을 호출하고 어떻게 당신은 그것을 호출 할 수 있습니다 주요로 : 당신은 메소드를 호출하는 클래스 findMP3Tracks의 이름을 사용할 수 있습니다

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

이는 정적으로 선언 되었기 때문에입니다. 따라서 인스턴스를 호출 할 필요는 없습니다. findMP3List<String>를 반환하기 때문에, 또한

(물론 다른 작업을 위해 해당 클래스의 인스턴스를 생성 할 수 있습니다), 당신은

0

먼저 (예 result에서) 변수에 저장 할 수 있습니다, 정적 메서드를 호출하기 위해 인스턴스가 필요하지 않으므로이 줄을

findMP3Tracks FT = new findMP3Tracks(); 

이면 쓸모가 없습니다.

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

가 PS : 자바 컨벤션 클래스 이름으로 대문자로 시작하는 나는, 그것이 있어야하므로 (예를 들어)

사용

findMP3Tracks.findMP3("Some MP3 name"); 

또한 당신은 반환 값을 얻을 필요 findMP3Tracks 클래스 이름을 FindMP3Tracks으로 변경하십시오.

-1

메소드 findMP3은 정적으로 선언됩니다. 정적 변수와 메소드는 클래스의 멤버입니다.

클래스 이름을 사용하여 직접 호출 할 수 있습니다. 따라서, 그것은이어야합니다 findMP3Tracks.findMP3()

또한, 정적 방법에 대한 단어. 메서드의 동작이 다른 인스턴스에 대해 다르지 않다는 것을 알고 있으면 정적으로 선언 할 수 있습니다. 하지만, 그것은 당신이 내릴 디자인 결정입니다. 전달 된 매개 변수에 따라 다르게 동작하는 경우 static이 아닌 메서드를 사용하는 것이 좋습니다.

+0

답변 해 주셔서 감사합니다. 최대한 빨리 제안을 시도하겠습니다. – user3182681

0

당신은 당신이 그것을 호출 할 때, 당신은 String 인수를 전달하는 거라고 (다른 것들 사이)을 의미

public static List<String> findMP3(String p) 

같은 방법을 선언했습니다. 그러나 당신은 어떤 인자도 전혀 전달하지 않고있는 곳에서

FT.findMP3(); 

을 썼습니다.뭔가 같은

FT.findMP3("Hello"); 

컴파일 것입니다; 또는 값을 검색하려는 MP3의 이름으로 사용하는 변수가 String 인 경우이를 사용할 수도 있습니다. 그러나 어떤 메소드에 대한 호출도 그 메소드의 선언과 일치해야합니다 (MUST).

관련 문제