2015-07-20 8 views
7

ho un'interfaccia generica e mi piacerebbe implementare questa interfaccia in modo generico:Implementare un'interfaccia generica

public interface BaseBean<T> { 

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

} 

Per qualche ragione, non posso fare l'implementazione generica pure. Eclipse implementa tutti i metodi di interfaccia in modo non generico:

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

quando cambio:

public Object create(Object t) 

a

public T create(T t) 

ottengo un errore di compilazione. Ho dimenticato qualcosa?

risposta

9

Change

public class BaseBeanImpl<T> implements NewBaseBean 

a

public class BaseBeanImpl<T> implements NewBaseBean<T> 

Quando si utilizza il tipo grezzo NewBaseBean, si ottiene Object invece di T nei metodi della vostra interfaccia.

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

Ha funzionato, grazie :) – jarosik

+0

@jarosik: si dovrebbe accettare la risposta. – theV0ID

Problemi correlati