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?正是我要找的!非常感谢!正是我要找的谢谢!非常感谢!