我想设置一个主类,它将字符串传递给Eclipse上的提示对话框中的另一个类。
所以我在"运行配置"上设置了一个程序参数。作为$ {string_prompt}变量。当我运行程序时,会出现输入对话框,我输入一个值。
然后我从String [] args参数的索引0中检索主类的输入:
if ( args.length > 0 ) {b = new BrowserHandler(args[0]);}
并将其传递给我的BrowserHandler类构造函数,该构造函数检索它并将String设置为输入值。
我先后尝试从主类调用一个名为SetBrowser()的方法。它必须检查上述字符串的有效性:
public static void main(String[] args) throws Exception {
BrowserHandler b;
if ( args.length > 0 ) {b = new BrowserHandler(args[0]);}
else b = new BrowserHandler();
b.setBrowser();
if ( !b.valid ) System.out.println("Browser not valid");
else {
//do something
}
}
}
BrowserHandler类:
public class BrowserHandler {
public String browser;
Boolean valid = true;
public BrowserHandler(String browser){
this.browser = browser.toLowerCase();
}
public void setBrowser() {
if ( this.browser == "firefox" ) {
System.out.println("...setting firefox");
this.driver = new FirefoxDriver();
}
else valid = false;
}
问题是browserhandler类的String浏览器获取变量,但是当检查字符串的值时,它总是会使条件失败,将valid设置为false。
我无法理解为什么,尽管已经尝试调试它。 有什么建议可能导致我的原因吗?
答案 0 :(得分:1)
在setBrowser
方法的if语句中,==
运算符应替换为this.browser.equals("firefox")
。
原因是==
运算符比较引用而不是比较的两个变量的实际值。