我想从Matlab获得int[].class
。不幸的是,Matlab不允许这种语法。同时,我允许调用任何Java函数或按原样访问静态成员。
例如,我无法调用
int.class
但可以
java.lang.Integer.TYPE
是否可以以相同的方式在JDK API中找到int[].class
?
答案 0 :(得分:3)
所以我在jshell中尝试了这个:
int[].class.getName()
那产生了:
[I
试图改变它:
Class.forName("[I")
这似乎解析了它:class [I
所以你可以试试Class.forName("[I")
。这似乎工作得很好:
Class.forName("[I").isArray() // outputs true
答案 1 :(得分:1)
您可以使用Apache Commons包来实现目标。有意思的是,ClassUtils.getClass正是您所寻找的:
>> org.apache.commons.lang.ClassUtils.getClass('int[]')
ans =
class [I
为了深入分析:
>> ans.get()
Annotation: 0
Annotations: [0×1 java.lang.annotation.Annotation[]]
AnonymousClass: 0
Array: 1
CanonicalName: 'int[]'
Class: [1×1 java.lang.Class]
ClassLoader: []
Classes: [0×1 java.lang.Class[]]
ComponentType: [1×1 java.lang.Class]
Constructors: [0×1 java.lang.reflect.Constructor[]]
DeclaredAnnotations: [0×1 java.lang.annotation.Annotation[]]
DeclaredClasses: [0×1 java.lang.Class[]]
DeclaredConstructors: [0×1 java.lang.reflect.Constructor[]]
DeclaredFields: [0×1 java.lang.reflect.Field[]]
DeclaredMethods: [0×1 java.lang.reflect.Method[]]
DeclaringClass: []
EnclosingClass: []
EnclosingConstructor: []
EnclosingMethod: []
Enum: 0
EnumConstants: []
Fields: [0×1 java.lang.reflect.Field[]]
GenericInterfaces: [2×1 java.lang.Class[]]
GenericSuperclass: [1×1 java.lang.Class]
Interface: 0
Interfaces: [2×1 java.lang.Class[]]
LocalClass: 0
MemberClass: 0
Methods: [9×1 java.lang.reflect.Method[]]
Modifiers: 1041
Name: '[I'
Package: []
Primitive: 0
ProtectionDomain: [1×1 java.security.ProtectionDomain]
Signers: []
SimpleName: 'int[]'
Superclass: [1×1 java.lang.Class]
Synthetic: 0
TypeParameters: [0×1 java.lang.reflect.TypeVariable[]]