我尝试使用setter实例化其他A类的类,并使用getter将变量获取到B类,但是它返回null。我了解到,由于我创建了类的新实例,因此这就是null的原因。什么是其他方法?
public class ContextBrowser {
String browser;
public String getBrowser() {
return browser;
}
public void setBrowser(String browser) {
this.browser = browser;
}
}
public class SetBrowser{
public void setCurrentBrowser(String browser){
ContextBrowser contextBrowser = new ContextBrowser();
contextBrowser.setBrowser(browser);
}
}
public class getBrowser{
public String readBrowser(){
ContextBrowser contextBrowser = new ContextBrowser();
return contextBrowser.getBrowser()
}
}
答案 0 :(得分:-1)
public class ContextBrowser {
/*
Singleton class
*/
private String browser;
private static ContextBrowser contextBrowserInstance;
// private constructor
private ContextBrowser() {}
public static ContextBrowser getContextBrowserInstance() {
if(contextBrowserInstance == null) {
contextBrowserInstance = new ContextBrowser();
}
return contextBrowserInstance;
}
public String getBrowser() {
return browser;
}
public void setBrowser(String browser) {
this.browser = browser;
}
}
public class SetBrowser{
public void setCurrentBrowser(String browser){
ContextBrowser contextBrowser = ContextBrowser.getContextBrowserInstance();
contextBrowser.setBrowser(browser);
}
}
public class GetBrowser{
public String readBrowser(){
ContextBrowser contextBrowser = ContextBrowser.getContextBrowserInstance();
return contextBrowser.getBrowser();
}
}
答案 1 :(得分:-1)
具有线程安全类的改进代码:
public class ContextBrowser {
private String browser;
private ContextBrowser() {}
public static synchronized ContextBrowser getInstance(){
return instance.get();
}
public String getBrowser() {
return browser;
}
public void setBrowser(String browser) {
this.browser = browser;
}
private static ThreadLocal<ContextBrowser> instance = new ThreadLocal() {
@Override
protected ContextBrowser initialValue() {
return new ContextBrowser();
}
};
}