获取`int[].class`的其他方法?
Other ways to obtain `int[].class`?
我想从 Matlab 获得 int[].class
。不幸的是,Matlab 不允许这种语法。同时,我允许调用任何 Java 函数或按原样访问静态成员。
例如,我不能打电话
int.class
但可以
java.lang.Integer.TYPE
是否可以用同样的方法在JDKAPI的某处找到int[].class
?
所以我在 jshell 中尝试了这个:
int[].class.getName()
结果是:
[I
并试图扭转它:
Class.forName("[I")
这似乎解析了它:class [I
所以你可以试试 Class.forName("[I")
。这似乎工作得很好:
Class.forName("[I").isArray() // outputs true
你可以用Apache Commons package in order to achieve your goal. Signally, 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[]]
我想从 Matlab 获得 int[].class
。不幸的是,Matlab 不允许这种语法。同时,我允许调用任何 Java 函数或按原样访问静态成员。
例如,我不能打电话
int.class
但可以
java.lang.Integer.TYPE
是否可以用同样的方法在JDKAPI的某处找到int[].class
?
所以我在 jshell 中尝试了这个:
int[].class.getName()
结果是:
[I
并试图扭转它:
Class.forName("[I")
这似乎解析了它:class [I
所以你可以试试 Class.forName("[I")
。这似乎工作得很好:
Class.forName("[I").isArray() // outputs true
你可以用Apache Commons package in order to achieve your goal. Signally, 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[]]