2012-01-27 6 views
-2

자바의 클래스가 아닌 메소드에서 arraylist를 반환하고 싶습니다. 검색 한 적이 있지만 지금까지 아무 것도 발견하지 못했습니다.arraylist를 반환하는 방법?

{ 
    int d=e.length(); 
    ArrayList list2 = new ArrayList(); 
    for (int i=0;i<d;i++) 
    { 
     list2.add('_'); 
    } 
    return list2; 
} 

감사합니다.

+0

코드에서 이미 반환 한 것처럼 보입니다. 실제 문제는 무엇입니까? –

+3

Java에서 * 비 클래스 메소드 * 란 무엇입니까? Java의 모든 메소드는 클래스에 속합니다. –

+0

비 클래스 메소드? 명확히하십시오. 정적 방법을 의미합니까? 그리고 방법의 서명은 어디에 있습니까? – Jules

답변

1

당신이 목록을

public class Example { 
    // a static method 
    public static List someStaticMethod(){ 
     // create and return a List 
    } 

    // this method is not static 
    public List someMethod(){ 
     // create and return a List 
    } 

} 

참고 서명에 반환 형식을 넣어 수행 후 반환해야 할 모든 당신이 그 중 하나를 반환 형식을 만들 수 있습니다 ListArrayList가 확장 때문.

List이 더 일반적인 경우 모든 유형의 목록을 반환 할 수 있습니다. 사용하는 내부 목록 (예 : ArrayList에서 LinkedList으로 변경)을 변경하려는 경우 메소드를 사용할 때마다 API를 변경할 필요가 없기 때문에 유용합니다.

그러나 List 인터페이스로 정의되지 않은 고유 한 메서드가있는 목록 구현을 사용하는 경우에는 메서드에서 목록을 가져올 때 해당 메서드에 액세스 할 수 없습니다. (ewe) 또는 정확한 리턴 유형을 지정하십시오.

+0

아직 테스트 할 기회가 없지만 제대로 작동하고 있다고 생각합니다. 참고로, 내 질문에 약간의 오류가 있었고, 나는 여전히 정답을 얻을 수 있었다. 대단히 감사합니다! –

2

모든 메서드는 정적 또는 인스턴스 메서드 여야합니다. 클래스 또는 인스턴스 중 하나가 소유합니다. C 또는 C++과는 달리 클래스 외부에있는 함수를 가질 수 있습니다.

그러나 정적 가져 오기를 수행 할 수 있습니다.

public class UtilClass { 
    public static ArrayList getList() { ... return someList; } 
} 

import static UtilClass.getList; 

그렇게하면 더 많이 또는 덜 치료할 수 있습니다. 그러나 클래스의 일부로 으로 정의되고이어야하며 정적이어야합니다.

편집 : 예제에서 getList를 정적으로 만드는 것을 잊었습니다.

+0

아마도 getList() 메소드가 작동하려면이 메소드를 정적으로 선언해야 할 필요가 있을까요? – Andy

0

코드가 groovyclosure 인 것처럼 표시 될 수 있습니다.

+0

죄송합니다. 오류가 있습니다. 나는 비 주류를 의미했다. –

0

메서드 정의는 다음과 같아야합니다.

public ArrayList<Character> getCharList(String e) 
{  
    int d = e.length(); 
    // as of Java 1.5, generic collections are available 
    ArrayList<Character> list2 = new ArrayList<Character>(); 
    for (int i=0;i<d;i++) { 
     list2.add(new Character('_')); 
    } 
    return list2; 
} 

문자열에 length() 메서드를 호출한다고 가정했습니다. 귀하의 상황에 적응하십시오.

다음 목록을 얻으려면, 수행

String e = "a string"; 
ArrayList<Character> myList = myClass.getCharList(e); 
0

모든 유형의 데이터를 반환 할 수 없습니다 void입니다 어떤 방법 그러나, 당신은 단지 법이 허용하는 유형을 반환 할 수 있습니다. 예를 들어 public int으로 시작하는 메서드는 int 값만 반환 할 수 있습니다.

public ArrayList thisReturnsAnArrList(ArrayList list) { 
    return list; //'list' is of the type 'ArrayList' 
} 

그러나, 좀 더 관대 할 수 있으며 방법은 List을 반환해야 : ArrayList에를 반환하려면 방법과 같이 선언에서 ArrayList를 포함해야합니다. 복수 클래스가 List (즉, ArrayListLinkedList)을 상속하므로 List을 확장하는 모든 값을 반환 할 수 있습니다.

관련 문제