2016-05-31 12 views
1

に適用することができない私は、メソッドreadA()readB()からリターンを印刷するようにプログラムしたいと思いますが、私はvalueBが原因で私のコンストラクタGenericMemoryCell()String,Stringが必要であることを知らせるmainからエラーを取得しています。しかし、コンストラクタ経由で2つのパラメータを受け取って格納する必要がある場合、以下のように2つのパラメータをコンストラクタに送信する必要はありませんか? valueBに1文字列のみを割り当てる方法はありますか?GenericMemoryCellは、与えられたタイプ

public class GenericMemoryCell<T>{ 

    public static void main(String[] args) { 
     GenericMemoryCell<String> valueA = new GenericMemoryCell<String>("1", "1"); 
     GenericMemoryCell<String> valueB = new GenericMemoryCell<String>("1"); 
     System.out.println("storedValueA: " + valueA.readA()); 
     System.out.println("storedValueB: " + valueB.readB()); 
    } 

    public GenericMemoryCell(T storedValueA, T storedValueB) 
    { this.storedValueA = storedValueA; this.storedValueB = storedValueB; writeA(storedValueA); writeB(storedValueB); } 

    public T readA() 
    { return storedValueA; } 

    public T readB() 
    { return storedValueB; } 

    private T storedValueA, storedValueB; 
} 

答えて

0

あなたは、単一のパラメータを有する第二のコンストラクタを追加する必要があり、単一のパラメータを渡すGenericMemoryCellを作成したい場合。ここ

だけ第二の値にNULLを渡し、2つのPARAMコンストラクタを呼び出す単一のparamコンストラクタの例である:ここ

public GenericMemoryCell(T storedValueA, T storedValueB) { 
    ... 
} 

public GenericMemoryCell(T storedValueA) { 
    this(storedValueA, null); 
} 
0

一を作成することによって、値bのみ1文字列を割り当てて行く方法であります単一のパラメータを持つより多くのコンストラクタ:

public GenericMemoryCell(T storedValueB) { 
    this.storedValueB = storedValueB;  
} 

これでクラスは次のようになりました。私はそれを改善するためにいくつかの場所を編集しました。 2つのパラメータを持つコンストラクタの場合と同様に、writeA(storedValueA)writeB(storedValueB)を呼び出す必要はありません。

GenericMemoryCell.java

public class GenericMemoryCell<T> { 

    public static void main(String[] args) { 
     GenericMemoryCell<String> valueA = new GenericMemoryCell<String>("1", "2"); 
     GenericMemoryCell<String> valueB = new GenericMemoryCell<String>("3"); 
     System.out.println("valueA (A): " + valueA.readA()); 
     System.out.println("valueA (B): " + valueA.readB()); 
     System.out.println("valueB (A): " + valueB.readA()); 
     System.out.println("valueB (B): " + valueB.readB()); 
    } 

    public GenericMemoryCell(T storedValueA, T storedValueB) { 
     this.storedValueA = storedValueA; 
     this.storedValueB = storedValueB; 
    } 

    public GenericMemoryCell(T storedValueB) { 
     this.storedValueB = storedValueB; 
    } 

    public void writeB(T storedValueB) { 
     this.storedValueB = storedValueB; 

    } 

    public void writeA(T storedValueA) { 
     this.storedValueA = storedValueA; 

    } 

    public T readA() { 
     return storedValueA; 
    } 

    public T readB() { 
     return storedValueB; 
    } 

    private T storedValueA, storedValueB; 
} 
関連する問題