Erro de construtor

pessoal,

estou construindo o contrutor e esta dando o seguinte erro na linha abaixo

		this(analisevw, analisevw.getUnidadePadrao());

erro :

call to this must be first statement in constructor



	public AnaliseContratada(Analise analise) {	
		this(analise, analise.getUnidadePadrao());
	}
	
	public AnaliseContratada(Vwanalise vwanalise) {		
			
		Ensaio ensaio = new Ensaio();
		ensaio.setId(vwanalise.getEnsaioId());
		
		Metodo metodo = new Metodo();
		metodo.setId(vwanalise.getMetodoId());
		
		Matriz matriz = new Matriz();
		matriz.setId(vwanalise.getMatrizId());
		UnidadeQuantitativa unidadeQuant = new UnidadeQuantitativa();		
		
		UnidadeAbsoluta unidadeAbso = new UnidadeAbsoluta();		
		
		Analise  analisevw = new Analise();

		analisevw.setId(vwanalise.getId());
		analisevw.setEnsaio(ensaio);
		
		analisevw.setMetodo(metodo);		
		
		analisevw.setMatriz(matriz);
		
	
		if (vwanalise.getTipo_unidade().equals("QUANTITATIVA")){
			unidadeQuant.setId(vwanalise.getUnidadepadraoId());	
			analisevw.setUnidadePadrao(unidadeQuant);
		}
		
		if (vwanalise.getTipo_unidade().equals("ABSOLUTA")){
					
			unidadeAbso.setId(vwanalise.getUnidadepadraoId());
			analisevw.setUnidadePadrao(unidadeAbso);
			
		}
		
		analisevw.setLq(new I18NBigDecimal(vwanalise.getLq()));
		analisevw.setLd(new I18NBigDecimal(vwanalise.getLd()));
		
		 Integer contador = 1;
				
		this(analisevw, analisevw.getUnidadePadrao());

	}

	
	public AnaliseContratada(Analise analise, Unidade unidade) {
		this.analise = analise;
		this.unidade = unidade;
	}

A chamada a um construtor dentro de outro construtor da mesma classe deve ser a primeira declaração. É o que o erro diz.
Isto vale também para chamadas do tipo super().
Analise melhor seus construtores e leve em consideração esta regra.

this(analisevw, analisevw.getUnidadePadrao()); só pode ser chamado na primeira linha do construtor.

Você está chamando no final:

public AnaliseContratada(Vwanalise vwanalise) {       
          
    Ensaio ensaio = new Ensaio();  
    ensaio.setId(vwanalise.getEnsaioId());

    // ...
    // isto aqui estah errado:
    this(analisevw, analisevw.getUnidadePadrao());  
  
}  
    

mas eu teria que chamar isso

 Ensaio ensaio = new Ensaio();    
    ensaio.setId(vwanalise.getEnsaioId());  
  
    // ...  

antes de chamar o

this(analisevw, analisevw.getUnidadePadrao());    

teria outro jeito de fazer isso ??

Não entendi seu ultimo comentário.

Mas vou tentar explicar…

this(…) e super(…) so podem ser chamados na primeira linha do construtor.

O problema é que vc está chamando no final de um dos construtores.

Pra isso a sugestão é que ao invés de você realizar esta chamada, você pode fazer o que você faria neste outro construtor:

Assim no lugar de:

Integer contador = 1;  
this(analisevw, analisevw.getUnidadePadrao());  

Ficaria:

Integer contador = 1;
this.analise = analisevw;  
this.unidade = analisevw.getUnidadePadrao();

boa ideia, nao tinha pensado nisso …vou testar aqui e te falo

obrigado