Sobrecarga de Método

6 respostas Resolvido
javaprogramação
D

Bom dia Amigos
Criei o seguintes métodos

public PedidoIten procuraId(PedidoIten iten ){
   try {
   String sql = "select a.ID , a.DESCRICAO, b.ID as CODIGO_BARRA  from PRODUTO as a inner 
join PRODUTO_CODIGO_BARRA as b on  a.ID = b.FK_PRODUTO where a.ID = ? ";
   return jdbctemplate.queryForObject(sql, 
           new Object[]{iten.produto.getId()} , 
           new RowMapper<PedidoIten>() {
                @Override
                public PedidoIten mapRow(ResultSet rs, int i) throws SQLException , 
EmptyResultDataAccessException {
                    PedidoIten pedidoIten = new PedidoIten();
                    pedidoIten.setDescricao(rs.getString("DESCRICAO"));
                    pedidoIten.produto.setId(rs.getInt("ID"));
                    pedidoIten.setFk_codigo_barra(rs.getInt("CODIGO_BARRA"));                               
                    return pedidoIten;
       }
    });
    
    } catch (EmptyResultDataAccessException e) {
        return null;
    }
   
}
public Produto procuraId(Produto produto ){

   try {
   String sql = "select * from PRODUTO as a where a.ID = ? ";
   return jdbctemplate.queryForObject(sql, 
           new Object[]{produto.getId()} ,new ProdutoMapper( ) );
    }catch(Exception e){
        JOptionPane.showMessageDialog(null,e.toString());
        return null;
    }
}
quando vou usar o método passando um produto  não compila e apresenta esse errono suitable method found for procuraId(Object)

method ProdutoDao.procuraId(PedidoIten) is not applicable

(argument mismatch; Object cannot be converted to PedidoIten)

method ProdutoDao.procuraId(Produto) is not applicable

(argument mismatch; Object cannot be converted to Produto)”

gostaria de saber aonde estou errando

6 Respostas

TerraSkilll

Em qual linha é apontado o erro?

Mostre também o trecho em que você está chamando o método procuraId() da classe produto, pois a mensagem de erro dá a entender que o parâmetro que está sendo passado para esse método não é compatível com o esperado.

Obs: esse problema não parece ter relação com sobrecarga de métodos, então o título não parece estar coerente.

Abraço.

FacaNaCaveira

Falai @desenho128 Bom dia,

Posta aqui no forum as classes ProdutoDao e PedidoIten e o erro que esta sendo apresentado para podermos ajudar a dar uma solução melhor para o seu problema.

Att
Max

staroski

É porque você está chamando o método procuraId passando um Object ao invés de um PedidoIten.

D

Desculpa galera pela demora estava viajando e fiquei sem internet.

produtos.forEach(produto ->{
        
        
        **Produto produtoTemp =  produtoDao.procuraId(produto);**
        PedidoIten pedidoIten = new PedidoIten();
        pedidoIten.setProduto();
        
    
    
    });

A linha que não compila e essa que esta marcado com **
O contexto e assim:
O usuário seleciona os produtos " índice,descrição,quantidade" que deseja eu armazeno esses produtos e um list de produtos e envio para a classe service. a service por sua vez trata os dados como representante e outras opções e faz esse for no list pegando cada produto na base e completando com as demais informações, para criar os itens do pedido coloquei no titulo do tópico sobrecarga de método porque estou passando como parâmetro um produto e ele deveria me retornar um produto mas ela informa que pedidoiten não pode ser convertido

staroski
Solucao aceita

Como você declarou essa variável produtos?

D

Boa valeu pela ajuda
nao tinha percebido mas no metodo eu coloquei errado

public void CriarPedidoDeVenda(List produtos,String representante,String cnpj,Pagamento pagamento,Desconto desconto,String observação )

e o correto seria

public void CriarPedidoDeVenda(List<Produto> produtos,String representante,String cnpj,Pagamento pagamento,Desconto desconto,String observação )

acho que esse e o problema de ficar olhando muito tempo pro mesmo código

Criado 25 de maio de 2019
Ultima resposta 27 de mai. de 2019
Respostas 6
Participantes 4