2009-07-11 15 views
0
public void setSRC(int var) 
{ 
    if (src== null) 
    { 
     src = new int[1]; 
     src[0] = var; 
    } 
    else 
    { 
     int i = 0; 
     int[] temp = null; 
     temp = new int[src.length]; 
     temp = src; 
     i = temp.length; 
     src = new int[i+1]; 
     for (int j =0; j < temp.length ; j++) 
        src[j] = temp[j]; 
     src[i] = var; 

    } 
} 

このメソッドを汎用またはテンプレートメソッドにすることを検討しています。どんな種類の助けもありがたいです。お待ちしておりますこれをjavaの汎用メソッドにする方法は?

+0

私はsrcがint []型であると仮定していますか? この関数はintを入力として受け取り、srcがまだビートセットされていない場合、入力を含むサイズ1のint []を作成します。 srcがすでに設定されている場合は、src配列の最後の入力をタックします。 primativesを使用しているので、配列を手動で拡張してデータをコピーする必要があります。 –

+4

要素を追加するたびに増加する配列を作成してもよろしいですか?それは時間の経過とともに非常に高価になる可能性があります。代わりにジェネリックArrayListを使用することをお勧めします。それは独自に成長し、あなたがしようとしているものを達成する可能性が高いでしょう。 – statenjason

+0

コードをクリーンアップするか、関数の機能を記述してください。質量のように見えます。 –

答えて

0

Java配列を使用する汎用コレクションを使用してください。代わりに、配列の代わりに

new int[1] 

使用

Collection<T> collection = new ArrayList<T>(); 
+0

Genericsはここに何も追加しません。'public void setSRC(Object var)'と 'Collection collection = new ArrayList (); 'と同じです。 – user102008

5

使用コレクションの

public <T> void setSRC(T var) 

、。 Java配列がジェネリックと混ざらないという事実は別として、それらは実際に追加されるように設計されています。コードを次のように置き換えることができます:

private List<T> src = new ArrayList<T>(); 

public <T> void setSRC(T var) { 
    src.add(var); 
} 
+0

srcをそのようなジェネリックコレクションとして定義できるかどうか不安です。 –

+0

さて、私は、彼の質問でそう言わなかったとしても、カムがsrcフィールドの宣言を自由に変更できると仮定しました。 – jqno

+0

ジェネリックに上記のコードを使用すると、クラスTを作成するように求められますか?それは正しい? – Kam

-1

このコードは、汎用データ型のクラスを作成し、そのデータ型のオブジェクトの動的配列を格納します。

import java.util.*; 
class Test2<T> 
{ 
    private Collection<T> src = new Vector<T>(); 

    public void setSRC(T var) 
    { 
     src.add(var); 
    } 

    public static void main(String[] args) 
    { 
     Test2 t = new Test2<Integer>(); 
     t.setSRC(5); 
     Test2 t2 = new Test2<Double>(); 
     t.setSRC(5.5); 
    } 
} 

これはあなたがしていることであれば、気にする必要はありません。独自の動的配列クラスを作成しようとしているようですが、JavaはCollections Frameworkクラスにたくさんのクラスを用意しています。なぜ車を再発明するのですか?

ここで具体的なことをしようとしている場合は、達成しようとしていることを教えてください。

0

この表記法は、Javaの初心者にとっては非常に混乱します。そこでここでは整数型の値についてjqnoの例を以下に示します。

private List<Integer> src = new ArrayList<Integer>(); 

public void setSRC(Integer var) { 
    src.add(var); 
} 

は今、srcが唯一の整数型のオブジェクトを格納できるArrayListのであり、それは、あなたの質問に非常に近いです。 int値は格納できませんが(int型はオブジェクトではありません)、必要に応じてJava 5/6がIntegerに変換されます(autoboxing)ので、setSRCを(int)iで呼び出すことができます。

アレイを使用してサイズを変更する必要がある場合は、System.arraycopy(..)メソッドを参照してください。

関連する問題