Java 对存储在子类中的数据应用静态方法
我正在使用一个类来访问存储在Jar文件中的类库信息,并运行为每个类库定制的操作。它包含从Jar文件加载本地化字符串等的方法Java 对存储在子类中的数据应用静态方法,java,Java,我正在使用一个类来访问存储在Jar文件中的类库信息,并运行为每个类库定制的操作。它包含从Jar文件加载本地化字符串等的方法 public class CodeBundle { public static String str(String id) { ... } ... } 我需要能够知道我试图从哪个库加载信息,因此我希望能够使用表示每个库的子类,例如: public class JAppFramework extends CodeBundle {
public class CodeBundle {
public static String str(String id) {
...
}
...
}
我需要能够知道我试图从哪个库加载信息,因此我希望能够使用表示每个库的子类,例如:
public class JAppFramework extends CodeBundle {
...
}
现在,在JApp框架的代码中,我希望能够调用JAppFramework.str(“…”)
从JApp框架资源包加载字符串。如果我有另一个库,比如TestLibrary
,我希望能够调用TestLibrary.str(“…”)
,从测试库的资源包中加载字符串。我所做的是在CodeBundle
中定义了一个名为getFile()
的方法,该方法将返回从中加载库的Jar文件。然后str()
方法将使用它来加载本地化字符串
问题是,CodeBundle
中的静态方法只能访问CodeBundle
类中存储的数据,据我所知,不能访问其任何子类中的数据
由于各种原因,我无法使用“getClass().getResource(name)”加载资源
有什么方法可以完成我想做的吗?您可以尝试使用单例:
public abstract class CodeBundle { // or even an interface
public abstract String str(String id);
}
public final class JAppFramework extends CodeBundle {
private static final CodeBundle INSTANCE = new JAppFramework();
// private constructor
private JAppFramework() {
// whatever
}
// get the instance
public static CodeBundle getInstance() { return INSTANCE; }
// Implement str() here
}
// Create other singletons as needed
在代码中:
CodeBundle bundle = JAppFramework.getInstance();
bundle.str(whatever);
当然,这是一个极端简单的例子。放入CodeBundle
中所需的任何字段/方法/构造函数/构造函数参数,因为它是抽象的,所以无法实例化