Como criar getter e setter de arraylist?

Bom dia, estou criando um jogo de perguntas e respostas, com os atributos: pergunta, resposta correta e o arraylist de opçao(private ArrayList opcao = new ArrayList();). Preciso do getter das opções para usar na minha classe principal para imprimir as perguntas e respostas na tela, só que eu não estou sabendo como criar o getter de opções por ser um Arraylist. Ja tentei de algumas formas e quando vou na classe principal não consigo acessar o getter. Se alguém puder me dar uma ideia de como eu faço isso eu agradeço.

public class Perguntas {

private String pergunta;


private ArrayList<String> opcao = new ArrayList<String>();


private String respostaCorreta;


//Metodo Construtor
public Perguntas(String p, String res, String opc1, String opc2, String opc3) {
    this.pergunta = p;
    this.opcao.add(opc1);
    this.opcao.add(opc2);
    this.opcao.add(opc3);
    this.respostaCorreta = res;
}



//GET E SET DA PERGUNTA
public String getPergunta() {
    return pergunta;
}

public void setPergunta(String p) {
    this.pergunta = p;
}

//GET E SET DAS OPCOES


//GET E SET DA RESPOSTA CORRETA
public String getRespostaCorreta() {
    return respostaCorreta;
}

public void setRespostaCorreta(String res) {
    this.respostaCorreta = res;
}


}

List/ArrayList são objetos, então os getters e setters são criados da mesma forma que outros objetos (como String). Algo assim:

public List<String> getOpcao(){
  return this.opcao;
}

public void setOpcao(List<String> opcao){
  this.opcao = opcao;
}

Entretanto, para manter o encapsulamento, eu não recomendaria expor o ArrayList completo se não for necessário. Você pode criar métodos acessórios na sua classe de Perguntas para adicionar respostas, ou pegar uma resposta específica pelo índice.

Abraço.