Metodo pelo construtor

Boa tarde amigos, estou com uma dificuldade para entender essa implementação abaixo:

Estou digitando pelo celular por isso omiti algumas partes do código.

class main() {
  Dados  d  = new Dados();
  d.setValor(new Chave("zero"), new Valor("prova"));
  d.setValor(new Chave("um"), new Valor(LocalDate.now()));
  d.setValor(new Chave("dois"),new Valor(LocalDateTime.now());
  
  System.out.println(d);
  
  class Chave {
    String chave ....
  }
  
  class Valor {
    String valor....
    LocalDate now..
    
    Valor(String valor)
      This.valor = valor;
    
    Valor(LacalDate now)
      this.data = now
  }
  
  class Dados {
    Chave[]
    Valor[]
    
    SetValor(Chave chave, Valor valor) {
      Chave[index ] = chave;
      Valor [index] = valor;
      
      toString() {
        For chave...
        For valor...
        return chave +"="+valor;
      }

Na saida Da classe Dados eu consegui:

zero = prova
Um = null
Dois = null

Não consigo entender como a saida da class Valor pode imprimir o valor LocalData ou LocalDataTime, pois a saida que eu consegui foi somente a string prova e a classe só pode entregar ou string ou LocalData, eu implementei a class Valor com dois construtores ( Valor( String prova)) e Valor (LocalData now) .

Tu quer saber pq imprimiu NULL nas saídas das datas?

Boa noite lucas consegui resolver , obrigado .

1 curtida