我想建立org.apache.commons.lang3.StringUtils
并添加特定于我的问题的某种方法。所以我尝试从公共类继承并编写
package org.test.project;
public class StringUtils extends org.apache.commons.lang3.StringUtils {
public static boolean myMethod(final String cs) {
// My method body
}
}
现在,我想在我的代码的另一部分中使用该public static boolean isEmpty(final CharSequence cs)
方法org.apache.commons.lang3.StringUtils
。我记得并且从这个线程中aString
是一个CharSequence
. 因此,我写
package org.test.project.package;
import org.test.project.StringUtils;
public class TestClass{
public void someMethod(String s){
if (StringUtils.isEmpty(s)){
// do stuff
}
}
}
为什么我会收到错误消息:
cannot find symbol
symbol: method isEmpty(String)
location: class StringUtils
在我的 IDE 中?
从这里我得到“所有可访问的方法都由子类继承”的信息。其中,还指出
继承的静态(类)方法和继承的非静态(实例)方法的唯一区别是,当您编写具有相同签名的新静态方法时,旧的静态方法只是被隐藏,而不是被覆盖。
但是我没有isEmpty
相同擦除的方法。
编辑
所以,感谢@luksch,我添加了一个方法
public static boolean isEmpty(final String cs) {
return isEmpty((CharSequence)cs);
}
在我的StringUtils
课堂上,这很有效。但是,为了进行测试,我想public static String center(final String str, final int size)
从公共库中调用。所以我写
package org.test.project.package;
import org.test.project.StringUtils;
public class TestClass{
public void someMethod(String s){
if (StringUtils.isEmpty(s)){
// do stuff
}
String test = StringUtils.center("test",10);
}
}
center
我的子类没有任何方法StringUtils
。所以我想,它会自动从org.apache.commons.lang3.StringUtils
. 但是,我收到与上面相同的错误消息:
cannot find symbol
symbol: method center(String,int)
location: class StringUtils
为什么?