Wie kann ich eine komplette ArrayList ohne Schleife in ein Array eines bestimmten Typs casten?

Eine ganze ArrayList zu casten ohne eine Schleife benutzen zu müssen gestaltet sich in Java etwas eigenartig.

Die Methode toArray() ist der Schlüssel hierzu. Das Problem: Eine ArrayList speichert bekanntlich Elemente vom Typ Object, die i.a. in den gewünschten Typ gecastet werden müssen. Dies ist mit Hilfe einer Schleife kein Problem, kostet jedoch bei großen ArrayList einiges an Performance. Wie teile ich nun also der Methode mit, welcher Array-Typ erzeugt werden soll? Hierzu muss seltsamerweise ein entsprechendes Array-Objekt der Größe 0 als Parameter übergeben werden und zusätzlich ein Casting durch Voranstellen des Array-Typs in Klammern erfolgen.

import java.util.ArrayList;

public class ArrayListCastenClass {  
    public static void main(String[] args){
        ArrayList al = new ArrayList();
        al.add("Klaus");
        al.add("Willi");
        al.add("Paul");
        
        String[] s = (String[]) al.toArray(new String[0]);
        
        for(int i=0;i<s.length;i++){
            System.out.println(s[i]);
        }
    }
}