2015-07-20 63 views
7

我有一個通用的接口,我想實現一種通用方式這個接口:實現一個通用接口

public interface BaseBean<T> { 

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

} 

出於某種原因,我不能實施普通的爲好。 Eclipse中實現了非一般的方式,所有的接口方法:

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

當我改變:

public Object create(Object t) 

public T create(T t) 

我得到一個編譯錯誤。我錯過了什麼?

回答

9

變化

public class BaseBeanImpl<T> implements NewBaseBean 

public class BaseBeanImpl<T> implements NewBaseBean<T> 

當您使用原始類型NewBaseBean,你Object,而不是T在接口的方法。

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

它的工作,謝謝:) – jarosik

+0

@jarosik:你應該接受答案。 – theV0ID