Isto é possível no Generics?

Suponhamos que temos as seguintes classes:

[code]
class TbPessoaBean implements Bean {…}

class EnderecoBean implements Bean {…}

class PaisBean implements Bean {…}

class QualquerNomeAquiBean implements Bean {…}
[/code] Queria fazer um get genérico da seguinte maneira:

class GenericDao { public List<? extends Bean> get(Clazz<?> clazzBean) { return null; // Aqui faz a consulta e retorna um List<? extends Bean>. } } Chamando o método get da seguinte forma abaixo da erro Type mismatch: cannot convert from List<capture#1-of ? extends Bean> to List.

List<TbPessoaBean> list = genericDao.get(TbPessoaBean.class);

E quando forço o cast funciona normalmente.

List<TbPessoaBean> list = (List<TbPessoaBean>) genericDao.get(TbPessoaBean.class);

Gostaria de chamar o método acima sem precisar forçar o cast, alguém sabe como faço isso com Generics??

Obrigado

Eu uso da seguinte forma:

class GenericDao<MyBean extends Bean> {  
  public List<MyBean> get(Clazz<?> clazzBean) {  
    return null; // Aqui faz a consulta e retorna um List<? extends Bean>.  
  }  
 }  

E depois uso da seguinte forma:

      GeneriDAO<TbPessoaBean> generiDAO = new GenericDAO<TbPessoaBean>();
      List<TbPessoaBean> list = genericDao.get(TbPessoaBean.class);  

Dessa forma não preciso usar o Cast

Tenta isso:

class GenericDao {  
   public &lt;E extends Bean&gt; List&lt;E&gt; get(Class&lt;E&gt; clazzBean) {  
      return null; // Aqui faz a consulta e retorna um List&lt;E&gt;.  
   }  
} 

Só pra completar, eu aconselho a utilizar a forma do sapulha. Mas pra ficar mais generico ficaria assim:

 class GenericDao<T extends Bean> {    
       private Class<T>	persistentClass;
	
       public GenericDao() {
		this.persistentClass = (Class<T>) ((ParameterizedType) getClass()
				.getGenericSuperclass()).getActualTypeArguments()[0];		
	}

       public List<T> listarTudo() {    
               return getSession().createCriteria(this.persistentClass).list();
       }    
 }   

OBS: Os meus beans sempre EXTENDERAM o Bean, ou AbstractBean ou AbstractVO, nunca IMPLEMENTARAM, esse também pode ser o problema.