java - 将字符串附加到抽象类中声明的静态最终字符串

标签 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 而无需创建新变量。

最好的方法是什么?

最佳答案

您不能将这些变量设为静态,因为它们只存在于父类(super class)中。

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

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);
    }
}

关于java - 将字符串附加到抽象类中声明的静态最终字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41448300/

相关文章:

java - 将 jtable 列设置为图像按钮,但动态更改特定行/列上的图像,而不是列中的所有行

使用 Marshaller 的 Matlab 中的 Java/JAXB/JAK 错误

java - 使用 Lucene 进行精确短语搜索?

java - 使用 crontab 中的 java 文件执行 bash 文件

java - 应用程序长时间不活动后自动短信不起作用

java - 如何使用 JProgressBar 测量任务进度并更新它

java - Swing - 尝试从 JList 中删除项目时出现异常

java - 关于 "binary"数据类型

java - 如何将 jar 文件的内容作为字节数组返回?

java - 如何在 JSP 声明中使用 JSTL