使用 Class.forName 创建静态数组
Create static array using Class.forName
在 Android 中有一个名为 "android.graphics.FontFamily" 的未声明(隐藏)class,我想创建它的静态数组。任何这样的事情:
Class<?> clazz = Class.forName("android.graphics.FontFamily"); // Ok.
Class<?> clazz_array = Class.forName("android.graphics.FontFamily[]"); // Method threw 'java.lang.ClassNotFoundException' exception.
要构建这个假设的代码:
FontFamily[] families = {fontFamily};
我该怎么做?
谢谢。
您应该能够以反射方式创建一个数组,然后获取它的 class。示例:
Class <?> clazz = Class.forName("android.graphics.FontFamily");
Object fontFamily = clazz.newInstance();
Object families = Array.newInstance(clazz, 1);
Array.set(families, 0, fontFamily);
您应该指定 Class
documentation 中指定的完全限定名称。所以在你的情况下它将是:
Class<?> clazzArray = Class.forName("[Landroid.graphics.FontFamily;");
[
表示一个数组,然后L
前缀和分号后缀表示中间的部分是class名字。
在 Android 中有一个名为 "android.graphics.FontFamily" 的未声明(隐藏)class,我想创建它的静态数组。任何这样的事情:
Class<?> clazz = Class.forName("android.graphics.FontFamily"); // Ok.
Class<?> clazz_array = Class.forName("android.graphics.FontFamily[]"); // Method threw 'java.lang.ClassNotFoundException' exception.
要构建这个假设的代码:
FontFamily[] families = {fontFamily};
我该怎么做?
谢谢。
您应该能够以反射方式创建一个数组,然后获取它的 class。示例:
Class <?> clazz = Class.forName("android.graphics.FontFamily");
Object fontFamily = clazz.newInstance();
Object families = Array.newInstance(clazz, 1);
Array.set(families, 0, fontFamily);
您应该指定 Class
documentation 中指定的完全限定名称。所以在你的情况下它将是:
Class<?> clazzArray = Class.forName("[Landroid.graphics.FontFamily;");
[
表示一个数组,然后L
前缀和分号后缀表示中间的部分是class名字。