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