更改if else切换字符串

Sow*_*mya 3 java if-statement switch-statement

如何使用switch case而不是编写以下方法if else

public void startElement(String uri, String localName, String qName,
    Attributes attributes) throws SAXException 
{

    currentElement = true;

    if (localName.equals("maintag"))
    {
        /** Start */ 
        sitesList = new SitesList();
    } else if (localName.equals("website")) {
        /** Get attribute value */
        String attr = attributes.getValue("category");
        sitesList.setCategory(attr);
    }

}
Run Code Online (Sandbox Code Playgroud)

Jig*_*shi 7

在您的情况下,您应该使用ENUM,而不是字符串文字,然后您可以enum在切换案例中参考:

进一步参考


Sea*_*oyd 5

使用字符串切换

你不能.Java 1.6不支持使用Strings的switch语句.

Java 1.7可能会(它是Project Coin的功能之一),但对于1.6,您应该使用枚举(最佳选择)或以其他方式使用地图.

使用Map进行伪切换

这是如何做:

创建一个界面:

interface SiteListProvider{
    SitesList provide();
}
Run Code Online (Sandbox Code Playgroud)

现在创建一个Map,将Strings映射到以下的不同实现SiteListProvider:

Map<String, SiteListProvider> providers =
    new HashMap<String, SiteListProvider>();
providers.put("foo", new SiteListProvider(){
    public SitesList provide(){
        return new SiteList("foo", "bar", "baz");
    }

});
providers.put("phleem", new SiteListProvider(){
    public SitesList provide(){
        return new SiteList("otherstuff");
    }
});
Run Code Online (Sandbox Code Playgroud)

现在使用它像这样:

SiteList siteList = providers.get(localName).provide();
Run Code Online (Sandbox Code Playgroud)