请参阅附图:
1)我在这里下载了一个新图书馆:(http://www.java2s.com/Code/Jar/ABC/Downloadcommonslang24jar.htm)
2)在Eclipse中,我右键单击“Referenced Libraries”>构建路径>配置构建路径>添加外部JAR并添加'commons-lang-2.4.jar'
3)我在课堂顶部添加了import org.apache.commons.lang.*
。
4)我从该班indexOfAny()
输入了一个方法并收到以下错误:'The method indexOfAny() is undefined for the type String.'
我错过了哪些步骤?我采取了哪些步骤是不必要的?我需要能够使用这种方法。
P.S。请忽略其余的代码。
答案 0 :(得分:4)
indexOfAny()不是String对象的方法。
也许你打算写StringUtils.indexOfAny(...)
答案 1 :(得分:2)
您正在尝试在字符串上使用这些方法,您应该阅读要使用的库的文档。
答案 2 :(得分:2)
您没有正确使用它,您尝试在indexOfAny()
对象上调用方法java.lang.String
- 此方法不属于该类。您需要在org.apache.commons.lang.StringUtils
上静态调用这些方法 - 形式为StringUtils.XXX()
Commons Library不会扩充现有的类(在任何情况下,java.lang.String
都是final
)。根据{{3}},你的电话应该是这样的:
StringUtils.indexOfAny(quantityInForPriceBandPopUp[i], ['z'])
或使用其中一个重载版本。
<强>更新强>
是否需要导入包?
the documentation和This article应该有助于处理打包和导入的所有细节。但是要理解的一些基本事项是:
包是Java使用的命名空间机制 - 这允许您和我都编写Utils
类,同时避免因同名而发生冲突。例如,java.sql.Date
和java.util.Date
- 两个Date
类可以存在并可以使用,因为它们位于不同的包中。将包及其子包设想为文件夹层次结构可能会有所帮助。
导入是一项便利功能,可让您通过简单名称(Math
或String
)而非其完全限定名称(FQN)(java.lang.Math
或{ {1}})每次你想要使用它,这会让你的代码变得痛苦和混乱,使它的可读性降低。
导入不会为您的代码添加任何内容或使其效率降低,因为导入的包没有链接到您的代码或类似的东西 - 如上所述,它只是一种避免使用FQN一直都在。
所以要回答你的问题,不,导入不是必需的,但是你必须每次都使用java.lang.String
而不是只能使用org.apache.commons.lang.StringUtils
。因此,虽然没有必要,但对于您自己和将要尝试阅读您的代码的任何其他人来说,这通常都很方便。
答案 3 :(得分:2)
因为在文档中你有:
static int indexOfAny(String str, char[] searchChars)
搜索字符串以查找第一个字符串 给定的任何字符的索引 一组字符。