2015-07-20 7 views
7

Ich habe eine generische Schnittstelle, und ich möchte diese Schnittstelle in allgemeiner Weise implementieren:eine generische Schnittstelle

public interface BaseBean<T> { 

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

} 

Aus irgendeinem Grund habe ich nicht die Implementierung als auch generische machen kann. Eclipse implementiert alle Interface-Methoden in nicht-generischer Art und Weise:

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

Wenn ich ändern:

public Object create(Object t) 

zu

public T create(T t) 

ich einen Compiler-Fehler erhalten. Habe ich etwas verpasst?

Antwort

9

ändern

public class BaseBeanImpl<T> implements NewBaseBean 

zu

public class BaseBeanImpl<T> implements NewBaseBean<T> 

Wenn Sie den rohen Typ NewBaseBean verwenden, erhalten Sie Object statt T in Methoden, um Ihre Schnittstelle des.

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

Es hat funktioniert, danke :) – jarosik

+0

@jarosik: Sie sollten die Antwort akzeptieren. – theV0ID

Verwandte Themen