Ajuda iniciante JAVA

Por favor preciso de ajuda para criar uma forma de tornar o atributo código dos programas de TV, sequenciais e não informado no construtor como está na implementação. Ou seja, cada novo
programa de TV terá um código sequencial criado automaticamente

import java.util.ArrayList;

public class ProgramaTV {
  
  int codigo;
  String nome;
  ArrayList <Pessoa> artistas = new ArrayList <Pessoa>();
  Pessoa diretor;
  String categoria;
  
  ProgramaTV(int codigo, String nome, String categoria) {
    this.codigo = codigo;
    this.nome = nome;
    this.categoria = categoria;
  }
  
  void setDiretor(Pessoa diretor) {
    this.diretor = diretor;
  }
  
  void setArtistas(Pessoa artista) {
    artistas.add(artista);
  }
  
  public String toString() {
    String programa = codigo + "-" + nome + " (" + categoria + ")\n";
    programa = programa + "Diretor : " + diretor +"\n";
    programa = programa + "Artistas : \n";
    
    for (int i = 0; i < artistas.size(); i++) {
      programa = programa + artistas.get(i) + "\n";
    }
    
    return programa;
  }
}
import java.util.ArrayList;

public class Principal {
  
  public static void main(String[] args) {
    ArrayList <ProgramaTV> programas = new ArrayList <ProgramaTV>();
    
    ProgramaTV p = new ProgramaTV(001, "O outro lado do paraíso","Novela");
    p.diretor = new Pessoa("Diretor 1", "Brasileiro");
    p.setArtistas(new Pessoa("Artista 1", "Brasileiro"));
    p.setArtistas(new Pessoa("Artista 2", "Brasileiro"));
    programas.add(p);
    
    p = new ProgramaTV(002,"Orgulho e Paixão","Novela");
    p.diretor = new Pessoa("Diretor 2", "Brasileiro");
    p.setArtistas(new Pessoa("Artista 3", "Brasileiro"));
    p.setArtistas(new Pessoa("Artista 4", "Brasileiro"));
    programas.add(p);

    p = new ProgramaTV(003,"Marley e eu","Filme");
    p.diretor = new Pessoa("Diretor 3", "Brasileiro");
    p.setArtistas(new Pessoa("Artista 5", "Brasileiro"));
    p.setArtistas(new Pessoa("Artista 6", "Brasileiro"));
    programas.add(p);
    
    p = new ProgramaTV(004,"Show Ivete Sangalo","Show");
    p.diretor = new Pessoa("Diretor 4", "Brasileiro");
    p.setArtistas(new Pessoa("Artista 7", "Brasileiro"));
    p.setArtistas(new Pessoa("Artista 8", "Brasileiro"));
    programas.add(p);
    
    for (int i = 0; i < programas.size(); i++) {
      System.out.println(programas.get(i));
    }
  }
}

Tu pode criar uma classe, ex.: ProgramaTvIdGenerator:

public class ProgramaTvIdGenerator {
  private static int idCount = 0;

  public static int gerar() {
    return ++idCount;
  }
}

Para usar:

ProgramaTV p = new ProgramaTV(ProgramaTvIdGenerator.gerar(), "O outro lado do paraíso","Novela");
    p.diretor = new Pessoa("Diretor 1", "Brasileiro");
    p.setArtistas(new Pessoa("Artista 1", "Brasileiro"));
    p.setArtistas(new Pessoa("Artista 2", "Brasileiro"));
    programas.add(p);