oys*_*yss 1 java string function
public String[] getValue(String keyName) {
ArrayList arraylist = (ArrayList) value.get(getKey(keyName));
String[] valueArray = new String[arraylist.size()];
for (int i = 0; i < valueArray.length; i++)
valueArray[i] = arraylist.get(i).toString();
return valueArray;
}
Run Code Online (Sandbox Code Playgroud)
我想修改此功能以使其更易于使用.如果返回String数组只包含一个元素.我希望它以String(非String数组)类型返回.
我怎么能用Java做到这一点?
Jon*_*eet 10
好吧,你可以声明该方法返回Object而不是String[]......但这使得它更难以使用,而不是更容易.
想想调用代码会是什么样子,我想你会明白为什么实际上更简单一致.
当然,您总是可以创建自己的OneOrMany界面来包含常见的操作,并且可以包含单个元素或多个元素......但同样,我看不到它的好处.(虽然我可以看到返回一个List<String>或一个Iterable<String>而不是一个数组的好处.)
编辑:看过你对Dilum的答案的评论,在调用者期望单个元素的情况下,我会创建帮助方法,允许表示集合或只是有两个方法:
public Collection<String> getValues()
{
...
}
public String getSingleValue()
{
// Throws an exception if there's more than one
}
Run Code Online (Sandbox Code Playgroud)
后者可以要么通过前者的方法中去,或可能为期望(和验证)的单个结果的情况下被优化.
这样,在调用代码中非常清楚您期望的是什么以及为什么,并且期望得到验证.
我可能不会引入新的接口,因为这意味着我要么必须包装现有的集合类,要么将它们子类化(argh).在C#中很容易,因为你可以使用Single()扩展方法(沿SingleOrDefault,FirstOrDefault等等)...
没有.
如果可能的话,你怎么能使用返回值?你会指定什么类型的?
XXX foo = getValue(keyName);
^^^
What goes here?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3851 次 |
| 最近记录: |