将字符串附加到在抽象类中声明的静态final String

时间:2017-01-03 16:44:06

标签: java

我有以下抽象类

public abstract class IStreamSorterTest<T> {

    protected static  String FOLDER_NAME = null;
    protected static  String FILE_EXT = null;
    protected static  String SCHEMA_FILE_EXT = null;
    protected static final String PATH_PREFIX = "src/test/resources/" + FOLDER_NAME;
    protected static final String USERS_FILE = "users" + FILE_EXT;
    protected static final String SORTED_USERS_FILE = "sorted_users" + FILE_EXT;
    protected static final String USERS_XML_SCHEMA = "users_schema" + SCHEMA_FILE_EXT;

扩展了几个类,我只希望在不创建新变量的情况下定义变量FOLDER_NAME,FILE_EXT和SCHEMA_FILE_EXT。

最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

您不能将这些变量设为static,因为它们只存在于超类中。

您可以将这些字符串传递给抽象类的构造函数:

public abstract class IStreamSorterTest<T> {

    protected final String pathPrefix;
    protected final String userFile;
    protected final String sortedUserFile;
    protected final String usersXMLSchema;

    protected IStreamSorterTest(String folderName, String fileExt, String schemaFileExt) {
        pathPrefix = "src/test/resources/" + folderName;
        userFile = "users" + fileExt;
        sortedUserFile = "sorted_users" + fileExt;
        usersXMLSchema = "users_schema" + schemaFileExt;
    }

}

然后在子类中:

public class SomeClass extends IStreamSorterTest<SomeType> {

    private static final String FOLDER_NAME = ...;
    private static final String FILE_EXT = ...;
    private static final String SCHEMA_FILE_EXT = ...;

    public SomeClass() {
        super(FOLDER_NAME, FILE_EXT, SCHEMA_FILE_EXT);
    }
}