2015-07-20 24 views
7

Tôi có một giao diện chung và tôi muốn thực hiện giao diện này trong một cách chung chung:Thực hiện một giao diện chung

public interface BaseBean<T> { 

    public T create(T t); 
    public T read(Long id); 
    public T update(T t); 
    public void delete(T t); 

} 

Đối với một số lý do, tôi không thể làm cho việc thực hiện chung là tốt. Eclipse thực hiện tất cả các phương pháp giao diện theo cách phi generic:

public class BaseBeanImpl<T> implements NewBaseBean { 

    @Override 
    public Object create(Object t) { 
     return null; 
    } 

    @Override 
    public Object read(Long id) { 
     return null; 
    } 

    @Override 
    public Object update(Object t) { 
     return null; 
    } 

    @Override 
    public void delete(Object t) { 
    } 

    @Override 
    public Object find(Long id) { 
     return null; 
    } 
} 

Khi tôi thay đổi:

public Object create(Object t) 

để

public T create(T t) 

tôi nhận được một lỗi biên dịch. Tôi đã bỏ lỡ một cái gì đó?

Trả lời

9

Thay đổi

public class BaseBeanImpl<T> implements NewBaseBean 

để

public class BaseBeanImpl<T> implements NewBaseBean<T> 

Khi bạn sử dụng các loại nguyên NewBaseBean, bạn sẽ có được Object thay vì T trong phương pháp của giao diện của bạn.

public class BaseBeanImpl<T> implements NewBaseBean<T> { 

    @Override 
    public T create(T t) { 
     return null; 
    } 

    @Override 
    public T read(Long id) { 
     return null; 
    } 

    @Override 
    public T update(T t) { 
     return null; 
    } 

    @Override 
    public void delete(T t) { 
    } 

    @Override 
    public T find(Long id) { 
     return null; 
    } 
} 
+0

Nó hoạt động, cảm ơn :) – jarosik

+0

@jarosik: u nên chấp nhận câu trả lời. – theV0ID

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