当前位置: 首页 > 面试题库 >

创建一个未知类型的数组

文国发
2023-03-14
问题内容

我有一个我必须验证问题值的对象,这些对象的某些属性是自定义对象的数组。这样一来,这将涉及到数组的各个元素。为每个元素执行吸气剂,例如:

AttribGrp[] x =  Object.getAttribGrp()
x[i].getSomeValue()

这是我需要达到的。我已使用带有属性列表的枚举以以下方式提取了数据。

public String getAttribValueAsString(MethodEnum attribName) 
{
    String attribValue = null;
    Object value = getAttrib(attribName.toString());

    if (value != null)
        attribValue = value.toString();

    return attribValue;
}

致电:

    private Object invoke(String methodName, Object newValue)
{
    Object value = null;
    try
    {
        methodInvoker.setTargetMethod(methodName);

        if (newValue != null)
            methodInvoker.setArguments(new Object[]{newValue});
        else
            methodInvoker.setArguments(new Object[]{});

        methodInvoker.prepare();
        value = methodInvoker.invoke();
    }
    catch (ClassNotFoundException e)
    {
        throw new IllegalStateException("Method invocation failed. " + e.getMessage(),e);
    }
    catch (NoSuchMethodException e)
    {
        throw new IllegalStateException("Method invocation failed. " + e.getMessage(),e);
    }
    catch (InvocationTargetException e)
    {
        throw new IllegalStateException("Method invocation failed. " + e.getMessage(),e);
    }
    catch (IllegalAccessException e)
    {
        throw new IllegalStateException("Method invocation failed. " + e.getMessage(),e);
    }
    return value;
}

我将使用数组中不同类型和不同值的多个数组。我想创建一个如下的方法。

    public Object getAttribArray(RIORepeatingGrpEnum repeatingGrp)
{
        repeatingGrp[] grp = null;
              Object grpVal = getAttrib(repeatingGrp.toString());
              if(grp != null)
                   grp = (repeatingGrp[]) grpVal;

              return grp;
}

这给了我多个错误,这些错误主要与repeatingGrp []有关。数组类型应与枚举名称相同。是否可以创建这样的方法来创建未定义类型的数组?


问题答案:

如果要具有未知类型的数组,请使用泛型:

 public <T> T[] getAttribArray(Class<T> repeatingGrpClass)
 {
    //get the attribute based on the class (which you might get based on the enum for example)
    return (T[]) getAttrib( repeatingGrpClass.getName() ); //note that you might want to use the class object instead of its name here
 }


 类似资料:
  • 问题内容: 我有几个函数需要精确的参数类型(又名): 我这样使用它们,效果很好: 但是我想知道是否有可能使代码更简洁,即 如果是这样,我应该放什么呢? 编辑: 1)我使用和作为简化示例。在我的实际代码中,我使用自定义类。 2)我需要知道我的函数中的确切类型(类),所以我不能 提前使用谢谢 问题答案: 您可以使用或者,这是双方共同的超类型和。 但是,泛型是不必要的: 等同于 删除后。 对于输入参数具

  • 我正在用TypeScript创建一个名为“三个犯罪”的简单逻辑游戏。 在尝试在TypeScript中预先分配类型化数组时,我尝试执行以下操作: 它给出了错误“表达式项的检查格式”。 也尝试过这样做 而这产生了“无法将任何[]转换为‘罪犯’” 什么是'TypeScript'的方式来做到这一点?

  • 问题内容: 假设我必须创建一个存储ArrayList的Integers数组,并且数组大小为10。 下面的代码可以做到这一点: 问题1: 我认为更合适的代码是 为什么这不起作用? 问题2: 下面两个都编译 有什么区别尽可能的引用声明和关注? 问题答案: 问题1: 基本上,这是Java语言禁止的。Java语言规范中的泛型部分对此进行了介绍。 使用时 您会收到编译器警告,因为以下示例将进行编译(为每行代

  • 问题内容: 在iOS 10 Swift 3中从图像选择器中选择图像时,出现错误- 没有选择和更新图像。我需要帮助或建议,以了解有关此方法的语法或任何内容在iOS10或Swift 3中是否已更改,或者是否有其他方法可以执行。 问题答案: 下面提到的代码确实为我解决了问题-

  • 问题内容: 我有一个关于将常量类型限制为某些值的问题,以及如何在Go中完成该操作。说我创建类型,其具有两个常数值和与我想限制该类型(用户从创建类型的其它值)。我是否可以通过创建一个程序包并使其值和可见性以及将类型限制为包含的程序包来实现此目的?例如,请参见下面的代码 这是将类型限制为某些常量值的正确方法吗? 问题答案: 缺陷 提议的解决方案以您想要的方式并不安全。可以使用无类型的整数常量来创建新值

  • 问题内容: 我尝试运行以下代码。顺便说一句,我是python和sklearn的新手。 其中y是0和1的np.ndarray 我收到以下信息: 文件“ C:\ Anaconda3 \ lib \ site-packages \ sklearn \ linear_model \ logistic.py”,行> 1174,适合check_classification_targets(y) 文件“ C:\