Create static array using Class.forName

182 Views Asked by At

In Android there is a undeclared (hidden) class named "android.graphics.FontFamily" and I want to create static array of it. Any thing like this:

Class<?> clazz = Class.forName("android.graphics.FontFamily"); // Ok.
Class<?> clazz_array = Class.forName("android.graphics.FontFamily[]"); // Method threw 'java.lang.ClassNotFoundException' exception.

To build this hypothetical code:

FontFamily[] families = {fontFamily};

How can I do it?

Thankyou.

2

There are 2 best solutions below

2
bcsb1001 On BEST ANSWER

You should be able to create an array reflectively then get its class. Example:

Class <?> clazz = Class.forName("android.graphics.FontFamily");
Object fontFamily = clazz.newInstance();
Object families = Array.newInstance(clazz, 1);
Array.set(families, 0, fontFamily);
0
Jon Skeet On

You should specify the fully-qualified name as specified in the Class documentation. So in your case it would be:

Class<?> clazzArray = Class.forName("[Landroid.graphics.FontFamily;");

The [ indicates an array, and then the L prefix and semi-colon suffix are to indicate that the part in the middle is a class name.