1

这个问题来自使用 Spring 3 框架和由 Spring Scaffolding 过程生成的 GWT 前端的上下文。

问题 1

对于下面的块,我有两个问题。一个ii是'new String [] { key };' 部分。方括号后面直接有花括号怎么办?方括号后跟花括号不应该导致数组初始化错误吗?

问题2

此外,它说此方法按 DAO 层所需的顺序返回主键字段,但看起来此方法最多可以返回一个带有 Object[] 和 keyValuesAsText[] 的键。由于输入只是一个字符串,它怎么可能扩展为返回 DAO 对象的键数组?

由于这是我关于 stackoverflow 的第一个问题,任何关于问题质量和我提出问题的方式的建议都将不胜感激。

代码

/**
  * Returns the Primary Key field values in the order they are required by the DAO     
   layer to find by primary key
  * @param key
  * @return
  */
protected Object[] getPrimaryKeysFromGoogleKey(String key) {
    String[] keyValuesAsText = new String[] { key };

    Object[] keyValues = new Object[keyValuesAsText.length];
    keyValues[0] = new Integer(keyValuesAsText[0]);

    return keyValues;
}
4

1 回答 1

1

问题一:

String[] keyValuesAsText = new String[] { key };

这是 Java 的数组创建语法之一。另一个是

String[] keyValuesAsText = { key };

使用这种语法,Java 根据在同一行上声明的变量的类型来推断数组的类型。

如果你写:

String[] keyValuesAsText;
keyValuesAsText = {key};

这是行不通的,因为 Java 不会推断数组的类型。在这种情况下,您必须编写:

String[] keyValuesAsText;
keyValuesAsText = new String[] {key};

我不确定这是否是一个好的语言设计功能,因为编译器可以根据变量的类型推断数组的类型。

问题2:

protected Object[] getPrimaryKeysFromGoogleKey(String key) {
    //creates an array with only one value so keyValuesAsText.length is always 1 
    String[] keyValuesAsText = new String[] { key };

    //sames as Object[] keyValues = new Object[1];
    Object[] keyValues = new Object[keyValuesAsText.length];

    //sets the first value of the keyValues array to the Integer.parseInt(key);
    keyValues[0] = new Integer(keyValuesAsText[0]);

    //the entire method could be replaced with the following line:
    //return new Object[] { new Integer(key) };    
    return keyValues;
}

它总是返回一个只有一个值的对象数组(从键解析的整数)。

于 2013-02-27T19:25:09.387 回答