0

我想建立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

为什么?

4

0 回答 0