2017-05-28 9 views
-1

そのクラスは同じ変数型(int + int || string + string)しか使用できません。私はジェネリックスの種類を使用して、私はそれが可能であることを知らないのですか?もちろんそのクラスは同じ変数型(int + int || string + string)のみをとります。

class Para1 <T> { 
    private T value_1; 
    private T value_2; 

    public Para1(T value_1 , T value_2){ 
     this.value_1 = value_1; 
     this.value_2 = value_2; 
    } 
    public void setValue_1(T value_1){ 
     this.value_1 = value_1; 
    } 
    public void setValue_2(T value_2){ 
     this.value_2 = value_2; 
    } 
    public T get_value_1(){ 
     return value_1; 
    } 
    public T getValue_2(){ 
     return value_2; 
    } 
} 

a1KlasaButton.addMouseListener(new MouseAdapter() { 
    @Override 
    public void mouseClicked(MouseEvent e) { 
     Para1 p1 = new Para1<>(textArea1.getText(),textArea2.getText()); 
     textField1.setText(p1.get_value_1() + "\n" + p1.getValue_2()); 
     super.mouseClicked(e); 
    } 
}); 
+2

一度に1つのタイプしか必要ない場合は、なぜ2つの異なるジェネリックタイプを使用しますか?ちょうど1つを使用してください... – Tom

+0

はい、私は文字列+ intを使用してそれをコンパイル – sadasdaaaa

+0

私はあなたがこれをoverthinkingだと思う。 1つの汎用パラメータを使用してください。 – Sweeper

答えて

0

- ただ一つのジェネリック型パラメータを使用してクラスを定義します。

public class Para2 <V> { 
    private V value_1; 
    private V value_2; 

    public Para2(V value_1 , V value_2){ 
     this.value_1 = value_1; 
     this.value_2 = value_2; 
    } 

    ... 
} 

...

Para2<String> p2 = new Para2<>(textArea1.getText(),textArea2.getText()); 
+0

と私は文字列と整数を使用していますそれは2つの同じタイプを取る必要があります – sadasdaaaa

+0

@sadasdaaaaそれは同じタイプのパラメータの任意の番号を取るでしょう。単一の型パラメータを使うことは、コンストラクタに渡すすべての値が、 'p2'(この例ではString)の宣言で使用した型と一致しなければならないことを意味します。 – Eran

0

あなたは複数のメンバーのための単一の型の引数を使用することができます。

public class Para2 <K> { 
    private K value_1; 
    private K value_2; // Also uses K 

    // all the methods are changed to fit this change 
} 

メモ、btw型引数を使用してJavaのintのようなプリミティブ型を参照することはできません。代わりに、ラッパークラスIntegerを使用する必要があります。

関連する問題