Salve.
Fino a questo momento conoscevo i Generics di Java ed utilizzavo classi che si basavano su di essi, oggi ho cominciato ad utilizzarli io stesso per le mie classi e c'è una parte del loro funzionamento che non mi è chiara.
So che i tutorial ufficiali di Java parlano di questo ma anche da quelli non sono ancora riuscito a capire bene.
Il problema riguarda array generici.

Se io ho una classe Classe<T>, con un campo privato ArrayList<T> (ma anche più generalmente un qualsiasi List<T>), non riesco a scrivere un metodo funzionante che mi restituisca un semplice array di elementi di tipo T.

Innanzitutto, è possibile? A quanto leggo online mi pare di si.
E' corretto concettualmente? Nel senso, non vedo problemi di sicurezza in quanto non c'è input quindi, se tutto il resto è implementato correttamente, non dovrebbero sorgere problemi di casting, giusto?
Come faccio? Ho trovato svariati modi online ma francamente non ci ho capito molto, complice qualche carenza in inglese

Insomma:

codice:
class Class<T> {

ArrayList<T> = new ArrayList<>();

public T[] getElements() {

// qui che ci metto? il metodo è dichiarato correttamente?

}

}
Grazie.