获取`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[]]