我需要在我的网络应用程序中使用预先输入功能来显示数据库中的名称。我使用 Dojo 过滤 select 来显示名称。这些名称必须显示在多个jsp页面中。我有一个名为 getClientNames() 的 Java 类,它从数据库获取名称列表。根据条件列表的名称会有所不同。因此,我将根据执行查询的参数将参数传递给该 java 类。
例如,
public class X{
public List<String> getNames(String param){
if param.equals("x"){
//query 1
}
else{
//query 2
}
return clisntList;
}
我有一个 Singleton 类来调用 getNames 方法。
public class ClassicSingleton {
private static ClassicSingleton instance = null;
List<String> clientList;
protected ClassicSingleton() {
// Exists only to defeat instantiation.
}
public static ClassicSingleton getInstance() {
if(instance == null) {
instance = new ClassicSingleton();
}
return instance;
}
public List<String> getName(){
X obj=new obj();
this.clientList=obj.getNames(param);
return this.clientList;
}
}
我需要将参数传递给这个单例方法 getName 以获得正确的结果。我怎样才能实现它..
最佳答案
到底为什么要将 clientList
作为成员字段?您只能在 getName
内部访问它,您总是在使用它之前对其进行设置 - 除了阻止优化器和引入竞争条件之外,它实际上没有做任何事情!
将 clientList
移动到函数内部后,向 getName
添加参数并将其传递给 getNames
更有意义:
public List<String> getName(String param){
X obj=new obj();
List<String> clientList=obj.getNames(param);
return clientList;
}
此外,这里没有理由使用单例模式,因为您并没有真正使用ClassicSingleton
的状态。您可以简单地将 getName
设为静态方法:
public static List<String> getName(String param){
X obj=new obj();
List<String> clientList=obj.getNames(param);
return clientList;
}
关于java - java中如何向单例传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21512578/