2012-01-27 16 views
-2

私はjavaの非クラスメソッドから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 
    } 

} 

ArrayListあなたは戻り値の型のいずれか、それらのいずれかを行うことができますList拡張ので、その。

Listより一般的な場合は、のリストタイプを返すことができます。これは、使用する内部リスト(ArrayListからLinkedListへの変更など)を変更する場合は、メソッドを使用するたびにAPIを変更する必要がないため、便利です。

Listインターフェイスで定義されていない独自のメソッドを持つリスト実装を使用すると、メソッドからリストを取得したときにそのメソッドにアクセスすることはできません。 (ewe)、または正確な戻り値の型を指定します。

+0

私はまだこれをテストする機会がありませんが、私はそれが動作していると信じています。参考までに、私の質問には何か誤りがありました。私はまだ正しい答えを得ることができて驚いています。どうもありがとうございました! –

2

すべてのメソッドは、静的メソッドまたはインスタンスメソッドのいずれかである必要があります。クラスまたはそのインスタンスの1つが所有しています。 CやC++のようなものではなく、クラスの外にある関数を持つことができます。

ただし、静的インポートを行うことはできます。

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

import static UtilClass.getList; 

これは、それを多かれ少なかれそれを扱うことができます。ただし、クラスの一部としてと定義され、静的である必要があります。

EDIT:この例では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という値を返すだけです。 ArrayListのを返すには、あなたの方法は、宣言の中にArrayListを含める必要があり、そのような:

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

しかし、あなたはより厳密で、メソッドがListを返すことができます。複数のクラスはList(つまりArrayListLinkedList)を継承しているため、Listに拡張された値を返すことができます。

関連する問題