2016-05-31 85 views
1

我想程序從方法readA()readB()打印的回報,但我從main指出valueB需要String,String,因爲我的構造GenericMemoryCell()的得到一個錯誤。但是,如果我需要通過構造函數接收和存儲2個參數,我不需要發送2個參數給構造函數,如下所示?我怎麼能只分配一個字符串到valueBGenericMemoryCell類GenericMemoryCell <T>不能應用於給定類型

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路過你需要添加第二個構造帶一個參數一個參數。

這裏是一個PARAM構造函數只是調用兩個PARAM構造函數,傳遞一個空的第二值的例子:

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

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

這裏是如何去創建一個只分配1字符串VALUEB更多構造函數與單個參數:

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

因此,現在您的類看起來如下所示。我編輯了幾個地方來改進它。就像你的構造函數中有兩個參數一樣,不需要調用: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; 
} 
相關問題