2017-05-28 65 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

如果一次只需要一種類型,那麼爲什麼要使用兩種不同的泛型?只是使用一個... – Tom

+0

是的,但我使用字符串+ int它編譯 – sadasdaaaa

+0

我認爲你是overhinking這一點。只需使用一個通用參數。 – 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

和我使用字符串和整數它的工作它必須採取兩個相同的類型 – sadasdaaaa

+0

@sadasdaaaa它會採取任何數字,你希望的相同類型的參數。使用單個類型參數意味着您傳遞給構造函數的所有值必須與您在「p2」聲明中使用的類型(本例中的字符串)匹配。 – 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 
} 

請注意,順便說一句,你不能使用類型參數來引用Java中的基本類型,如int。您將不得不使用包裝類Integer