Conversão de String para Calendar

Bom dia, preciso de ajuda para converter uma data informada como String para Calendar. O exercício pede que isso seja feito no método construtor. Tentei dessa forma, mas tem apresentado um erro “void cannot be converted to Calendar”.

package atividade02;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ProdutoPerecivel extends Produto {

private Calendar dataValidade;

public ProdutoPerecivel(String n, int q, double v, String data) {
    super(n, q, v);
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    Calendar c = Calendar.getInstance();
    try {
        this.dataValidade = c.setTime (sdf.parse(data));
    } catch (ParseException ex) {
        Logger.getLogger(ProdutoPerecivel.class.getName()).log(Level.SEVERE, null, ex);
    }
      

}


public Calendar getDataValidade() {
    return dataValidade;
}

public void setDataValidade(Calendar dataValidade) {
    this.dataValidade = dataValidade);
}

}

Posta o stack trace completo do erro.

O método setTime é void então ele não retorna nada, mas você está tentando atribuir o retorno à uma variável.

Você nem precisa dessa variável local c, pode fazer diretamente assim:

dataValidade = Calendar.getInstance();
dataValidade.setTime(sdf.parse(data));
1 curtida

Não entendi esse construtor super(n, q, v) uma vez que a classe ProdutoPerecivel não herda(extends) de outra classe que não a Object.

Você imagina que ela faça:
this.n = n;
this.q = q;
this.v = v;
Aliás onde estão as variáveis de instância?

public class ProdutoPerecivel extends Produto {