这个问题来自Spring Spring框架和Spring Scaffolding过程生成的GWT前端的上下文。
我对下面的块有两个问题。一个是'new String [] {key};'部分。如何在它们之后直接使用带花括号的方括号? 方括号后跟花括号是否会导致数组初始化错误?
此外,它表示此方法按照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;
}
答案 0 :(得分: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;
}
它总是返回一个只有一个值的对象数组(从键解析的整数)。