[RESOLVIDO]ERRO de constructor

2 respostas
E

Pessoal,

esta dando erro nesta linha :

listaGruposDoMetodo.put(obj[0], new Dinheiro(obj[1]));

erro :
cannot find symbol
symbol : constructor Dinheiro(java.lang.Object)
location: class br.com.cqa.lims.financeiro.Dinheiro

segue abaixo minha classe

public GruposDoMetodo listaGruposDoMetodo(Metodo metodo){
		System.out.println("listaGruposDoMetodo ");
		GruposDoMetodo gruposDoMetodo = new GruposDoMetodo();
		Map<Long, Dinheiro> listaGruposDoMetodo = new HashMap <Long, Dinheiro>();
		gruposDoMetodo.setMetodoId(metodo.getId());
		try{
			
				ini = new InitialContext();
				PrecoPorMetodoServiceLocal PrecoPorMetodoBean = (PrecoPorMetodoServiceLocal)ini.lookup("PrecoPorMetodoServiceBean/local");	
				List<Object> objectList =PrecoPorMetodoBean.selecionaprecopormetodo(metodo);
				
						Iterator iterator = objectList.iterator();
						 
						 while(iterator.hasNext()){
							 Object []obj = (Object[])iterator.next();
							 System.out.print(obj[0]);
							 
							 System.out.print(" ");
							 
							 System.out.println(obj[1]);	
							 
							 listaGruposDoMetodo.put(obj[0], new Dinheiro(obj[1]));
						 }
	
			System.out.println("carregou list precopormetodo");			
	 
				
			
			gruposDoMetodo.setListaGrupoDeMetodos(listaGruposDoMetodo);
			
			
			return gruposDoMetodo;
		} catch (Exception e){
			System.out.println("Erro ao ler GruposDoMetodo para o metodo " + metodo.getNome() + ".");
			return gruposDoMetodo;
		} 
		
	}


classe dinheiro 

@Embeddable
public class Dinheiro implements Serializable {

	private static final long serialVersionUID = 153086301626156806L;

	private static final String MASK = "#,##0.00";

	private BigDecimal valor;

	public Dinheiro() {
		this.valor = new BigDecimal(0);
	}

	public Dinheiro(BigDecimal valor) {
		this.valor = valor;
	}

	public Dinheiro(String valor) {
		DecimalFormat formatter = new DecimalFormat(MASK);
		formatter.setDecimalFormatSymbols(new DecimalFormatSymbols(new Locale(
		        "pt", "BR")));
		try {
			this.valor = new BigDecimal(formatter.parse(valor).doubleValue());
		} catch (ParseException e) {
			throw new RuntimeException(e);
		}
	}

	public Dinheiro(double valor) {
		this.valor = new BigDecimal(valor);
	}

	public BigDecimal getValor() {
		return valor;
	}

	public double doubleValue() {
		return valor.doubleValue();
	}

	@SuppressWarnings("unused")
	private BigDecimal setValor(BigDecimal valor) {
		return this.valor = valor;
	}

	public Dinheiro soma(Dinheiro dinheiro) {
		return new Dinheiro(this.valor.add(dinheiro.valor));
	}

	public Dinheiro subtrai(Dinheiro dinheiro) {
		return new Dinheiro(this.valor.add(dinheiro.valor.negate()));
	}

	public Dinheiro multiplicar(double multiplicador) {
		BigDecimal aux = new BigDecimal(multiplicador);
		return new Dinheiro(aux.multiply(this.valor));
	}

	public Dinheiro divide(double divisor) {
		BigDecimal aux = new BigDecimal(divisor);
		return new Dinheiro(this.valor.divide(aux, 2, RoundingMode.HALF_EVEN));
    }

	@Override
	public String toString() {
		DecimalFormat formatter = new DecimalFormat(MASK);
		formatter.setDecimalFormatSymbols(new DecimalFormatSymbols(new Locale(
		        "pt", "BR")));
		return formatter.format(valor);
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
		        + ((toString() == null) ? 0 : toString().hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		final Dinheiro other = (Dinheiro) obj;
		if (toString() == null) {
			if (other.toString() != null)
				return false;
		} else if (!toString().equals(other.toString()))
			return false;
		return true;
	}

}

2 Respostas

victormagno

A classe Dinheiro não tem nehum construtor que receba um Object.

Ou você cria um construtor que receba um Object ou faz um cast para os tipos BigDecimal ou String.

E

Pessoal,

Resolvi da seguinte forma :

int vgrupo =  (Integer) obj[0];
							 long vgrupoaux = vgrupo;
							 
							 Double vdinheiro = (Double) obj[1];
							 

							 listaGruposDoMetodo.put(vgrupoaux, new Dinheiro (vdinheiro));
Criado 21 de novembro de 2012
Ultima resposta 21 de nov. de 2012
Respostas 2
Participantes 2