2011-12-30 59 views
55

Tôi muốn tạo ra một lớp KeyValue nhưng theo cách chung chung và đây là những gì tôi đã viết:cách tạo một hàm tạo chung cho một lớp chung trong java?

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); 
    } 
} 

lỗi nói: "Lỗi cú pháp trên thẻ '>', nhận diện mong đợi sau khi dấu hiệu này"

Tôi nên tạo một hàm tạo chung trong java như thế nào?

+0

@dasblinkenlight có câu trả lời đúng. Chỉ muốn đề cập rằng AbstractMap.SimpleEntry thực hiện những gì bạn muốn. – user949300

+0

Ai đó có đủ thông tin vui lòng sửa lỗi chính tả của câu hỏi? –

Trả lời

68

Bạn cần xóa <T, E> khỏi chữ ký của nhà xây dựng: nó đã ở đó hoàn toàn.

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

bạn có thể sử dụng giới hạn bất cứ nơi nào có thể, ví dụ public class KeyValue để nó là loại hơn an toàn –

+0

@PragalathanM Đó là chắc chắn đúng, nhưng nó đi cách xa hơn sự giúp đỡ với một tầm thường lỗi cú pháp trong OP. – dasblinkenlight

+4

Chỉ muốn chỉ ra, vì vậy OP biết: Nhà xây dựng ở đây là * KHÔNG * chung chung. Lớp học là. Các phương thức chung (và các hàm tạo) và các lớp chung là những thứ hoàn toàn khác nhau. – Darkhogg

3

Viết constructor chính xác giống như cách bạn đã viết các phương pháp khác

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

Điều đó sẽ không biên dịch. Bạn có khai báo kiểu sau tên kiểu, nó phải ở trước trong một ctor. – Saish

+0

mmm ... Tôi không nghĩ vậy) –

+0

Hãy dùng thử với javac. – Saish

Các vấn đề liên quan