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

Java 将字符串附加到抽象类中声明的静态最终字符串,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_PRE

我有以下抽象类

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;
公共抽象类是streamsortertest{
受保护的静态字符串文件夹\u NAME=null;
受保护的静态字符串文件\u EXT=null;
受保护的静态字符串模式\u文件\u EXT=null;
受保护的静态最终字符串路径\u PREFIX=“src/test/resources/”+文件夹\u名称;
受保护的静态最终字符串用户\u FILE=“USERS”+文件\u EXT;
受保护的静态最终字符串排序\u用户\u FILE=“排序的\u用户”+文件\u EXT;
受保护的静态最终字符串USERS\u XML\u SCHEMA=“USERS\u SCHEMA”+SCHEMA\u FILE\u EXT;
扩展了几个类,我只想在其中定义变量FOLDER\u NAME、FILE\u EXT和SCHEMA\u FILE\u EXT,而不创建新变量


最好的方法是什么?

不能将这些变量设置为静态变量,因为它们只存在于超类中

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

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

}
公共抽象类是streamsortertest{
受保护的最终字符串路径前缀;
受保护的最终字符串用户文件;
受保护的最终串分拣机文件;
受保护的最终字符串usersXMLSchema;
受保护的IStreamSorteTest(字符串folderName、字符串fileExt、字符串schemaFileExt){
pathPrefix=“src/test/resources/”+文件夹名称;
userFile=“users”+fileExt;
sortedUserFile=“排序的用户”+fileExt;
usersXMLSchema=“users\u 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);
    }
}
public类SomeClass扩展了IStreamSorterTest{
私有静态最终字符串文件夹_NAME=。。。;
私有静态最终字符串文件_EXT=。。。;
私有静态最终字符串模式_文件_EXT=。。。;
公共类(){
超级(文件夹名称、文件外部、模式文件外部);
}
}

不能将这些变量设置为静态变量,因为它们只存在于超类中

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

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

}
公共抽象类是streamsortertest{
受保护的最终字符串路径前缀;
受保护的最终字符串用户文件;
受保护的最终串分拣机文件;
受保护的最终字符串usersXMLSchema;
受保护的IStreamSorteTest(字符串folderName、字符串fileExt、字符串schemaFileExt){
pathPrefix=“src/test/resources/”+文件夹名称;
userFile=“users”+fileExt;
sortedUserFile=“排序的用户”+fileExt;
usersXMLSchema=“users\u 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);
    }
}
public类SomeClass扩展了IStreamSorterTest{
私有静态最终字符串文件夹_NAME=。。。;
私有静态最终字符串文件_EXT=。。。;
私有静态最终字符串模式_文件_EXT=。。。;
公共类(){
超级(文件夹名称、文件外部、模式文件外部);
}
}

这在Java中是不可能的,没有覆盖静态变量的概念。改用getter。抽象类中的getter?在Java中是不可能的,没有覆盖静态变量的概念。改用getter。抽象类中的getter?正是我要找的!非常感谢!正是我要找的谢谢!非常感谢!