Oto zmienna Class<?> cls
, teraz chcę uzyskać kolejny Array Class Object
, którego typem komponentu jest cls
.o java: pobierz `String []. Class` z` String.class`, a jeśli `String.class` jest" typem środowiska wykonawczego "?
Na przykład, jeśli cls
= String.class
, chcę uzyskać String[].class
; jeśli cls
= int.class
, chcę uzyskać , co powinienem zrobić?
Widzisz, to dość łatwo dostać String.class
z String[].class
:
Class<?> arrayCls = String[].class;
if(arrayCls.isArray()){
Class<?> cls = arrayCls.getComponentType();
}
Ale nie mogę znaleźć łatwy sposób zrobić odwrotnie.
Oto jeden z możliwych rozwiązań:
Class<?> clazz = String.class;
Class<?> arrayClass = Array.newInstance(clazz,0).getClass();
Czy jest jakiś sposób, aby to zrobić ciasto proszę?
Co jest nie tak z tym rozwiązaniem? – Thilo
@Thilo Rozwiązanie jest wynikiem mojego przypuszczenia. Działa dobrze, ale nie jestem pewien, czy to jest najlepszy sposób. To rozwiązanie wymaga dynamicznego utworzenia jednostki tablicowej o długości 0. – watchzerg
Interesujące pytanie. Po prostu ciekawy, dlaczego potrzebujesz tablicy "Class" obiektu? –