Problema de instancia de classe e loop

Olá a todos. tenho o seguinte problema.
Tenho a classe A que pode ter um numero indeterminado de instancias da classe B.
Exemplo: no formulario de cadastro o usuario ira definir quantos telefones irá cadastrar.

Pra isso uma terceira classe, instancia A, instancia B e depois faz referencia de FK entre as duas.

Se for manualmente, consigo fazer, exemplo:

ClasseA classeA = new ClasseA (parametros do construtor.)
ClasseB classeB = new ClasseB(parametros do construtor.).

classeA.getClasseB().addAll(Arrays.asList(classeB));
classeB.getClasseA().addAll(Arrays.asList(classeA));

Acontece que dessa forma há um numero definidos da ClasseB (nesse caso UMA apenas.)
Queria algo indefinido.
Tentei um foreach mas sem sucesso. Alguém pode ajudar?

E o que acontece se, para cada classeB em classeA, você chamar

classeA.getClasseB().add(classeB);
classeA.getClasseB().add(outraClasseB);
classeA.getClasseB().add(maisUmaClasseB);

???

Entao vai adicionando normalmente. Mas dessa forma tenho que informar quantas classesB serão.

Exemplo:

ClasseA classeA = new ClasseA (parametros do construtor.)
ClasseB classeB = new ClasseB(parametros do construtor.).
ClasseB classeB2 = new ClasseB(parametros do construtor.).
ClasseB classeB3 = new ClasseB(parametros do construtor.).

classeA.getClasseB().addAll(Arrays.asList(classeB, classeB2, classeB3));
classeB.getClasseA().addAll(Arrays.asList(classeA));
classeB2.getClasseA().addAll(Arrays.asList(classeA));
classeB3.getClasseA().addAll(Arrays.asList(classeA));

E nao queria dessa forma. Queria com foreach pois assim nao precisso definir o numero de instancias “na mão” como nesse exemplo, 3 istancias de classeB. Queria algo do tipo

foreach(ClasseB x : ???){
???
}

os ??? é que não sei como fazer.

Da onde tirou isso, cara?
Estamos falando de um ArrayList e não de um ClasseB[]

Para cada telefone a ser cadastrado, você pode fazer, simplesmente, um

classeA.getClasseB().add(new ClasseB(...));

Entendeu?

darlan, na verdade ainda estou meio perdido.

Vou colocar o meu código e se puder ajuda, agradeço demais

Estou na classe PessoaFisicaService e segue o método de inserir:

Telefone telefone = new Telefone(pessoaFisicaDTO.getNumeroDeTelefone());

Cliente cliente = new PessoaFisica(pessoaFisicaDTO.getNome(), pessoaFisicaDTO.getCpf(), pessoaFisicaDTO.getRg());

((PessoaFisica) cliente).getTelefones().addAll(Arrays.asList(telefone));
telefone.getPessoasFisicas().addAll(Arrays.asList((PessoaFisica) cliente));

Novamente, dessa maneira apenas um telefone é inserido por cliente. E queria que fosse um numero indefinido.

Você disse que o cliente vai definir a quantidade de telefones num formulário, não?
Como pretende passar isso ao backend?

No momento estou testando com o postman com o json. Fica assim:
{
“varios campos” : "varios valores passados,
“numeroDeTelefone” : “9999-9999”
}

e gostaria que fosse assim:
{
“varios campos” : "varios valores passados,
“arrayDeTelefone” :
[
{“numeroDeTelefone” : “9999-9999”},
{“numeroDeTelefone” : “8888-8888”},
{“numeroDeTelefone” : “7777-777”},
{ repete n vezes}
}

Ja na parte web, o formulário campo de telefone, terá um + para criar um novo campo de telefone e adicionar mais números.

Independente disso, você já vai receber um array de telefones. Então eu não entendi qual a dúvida.

A dúvida é que nao estou conseguindo salvar mais de um telefone. como explicado acima.
Eu sei que vou receber um array, porém nao consigo criar objetos telefone de acordo com o numero de telefones passados.
Estou me perdendo nisso. Sei apenas criar UM telefone.
Voce deu a dica

classeA.getClasseB().add(new ClasseB(…));

porem como farei
classeB.getClasseA().add(new ClasseA()); sendo que o numero de classeB é variavel. pode ser 1 ou podem ser 4, ou 3.
Estou me perdendo nessa parte.

perceba que no codigo que passei, apenas um é instanciado:
essa linha:
Telefone telefone = new Telefone(pessoaFisicaDTO.getNumeroDeTelefone());

Entendi o que você está fazendo de errado.
Primeiro, adeque as classes Cliente e PessoaDTO e defina não apenas um, mas uma lista de telefones.
Então isso

Pode passar para isso

Depois, ao invés disso:

Itere sobre a lista e vá inserindo os telefones no array.

Fiz o seguinte:

no DTO ao invés de ser:

String numeroTelefone
mudei para
private List < Telefone > telefones;
e criei o metodo:
public void adicionaTelefoneLista(String numeroTelefone){
telefones.add(new Telefone(numeroTelefone);
}

ai na classe service ao invés desse codigo no metodo de inserir, que tem como parametro pessoaFisicaDTO:
Telefone telefone = new Telefone(pessoaFisicaDTO.getNumeroDeTelefone());

coloquei

foreach(Telefone x : pessoaFisicaDTO.adicionaTelefoneLista()){
((PessoaFisica) cliente).getTelefones().addAll(Arrays.asList(x));
x.getPessoasFisicas().addAll(Arrays.asList((PessoaFisica) cliente));
}

porem deu Erro 415 Unsupported media type