2011-12-30 24 views
55

Bir KeyValue sınıfını ama genel bir şekilde oluşturmak istiyor ve bu yazdığım budur: "Bu belirteci sonra beklenen Tanıtıcı '>' Sözdizimi hatası belirteç üzerinde"java'da genel bir sınıf için genel bir kurucu nasıl oluşturulur?

:

public class KeyValue<T,E> 
{ 

    private T key; 
    private E value; 
    /** 
    * @return the key 
    */ 
    public T getKey() { 
     return key; 
    } 
    /** 
    * @param key the key to set 
    */ 
    public void setKey(T key) { 
     this.key = key; 
    } 
    /** 
    * @return the value 
    */ 
    public E getValue() { 
     return value; 
    } 
    /** 
    * @param value the value to set 
    */ 
    public void setValue(E value) { 
     this.value = value; 
    } 

    public KeyValue <T, E>(T k , E v) // I get compile error here 
    { 
     setKey(k); 
     setValue(v); 
    } 
} 

hata diyor

java'da nasıl genel bir kurucu oluşturmalıyım?

+0

@dasblinkenlight doğru cevabı vardır yazdı. Sadece istediğin şeyi yapmak istediğini AbstractMap.SimpleEntry yapmak istedim. – user949300

+0

Yeterince doğru olan biri, sorunun yazımını düzeltebilir mi? Mümkün –

cevap

68

<T, E>, kurucunun imzasından kaldırmanız gerekir: Bu, zaten var.

public KeyValue(T k , E v) // No compile errors here :) 
{ 
    setKey(k); 
    setValue(v); 
} 
+0

Eğer public class KeyValue örneğin için, sınırları kullanabilirsiniz yüzden kesinlikle doğrudur –

+0

@PragalathanM fazla türü güvenlidir, ancak önemsiz bir yardım ötesine gider OP'deki sözdizimi hatası. – dasblinkenlight

+4

Sadece şunu belirtmek isterim, böylece OP biliyor: Buradaki kurucu * NOT * jenerik. Sınıf. Genel yöntemler (ve yapıcılar) ve jenerik sınıflar tamamen farklı şeylerdir. – Darkhogg

3

Yaz yapıcı aynı şekilde diğer yöntemleri

public KeyValue(T k , E v) 
    { 
     setKey(k); 
     setValue(v); 
    } 
+0

Bu, derlenmeyecek. Tür isminden sonra tip beyannamesi var, bir ctorda daha önce olması gerekiyor. – Saish

+0

mmm ... Bunu düşünmüyorum) –

+0

javac ile deneyin. – Saish

İlgili konular