Java Multiple ResourceBundles

前端 未结 4 2172
别跟我提以往
别跟我提以往 2021-02-06 14:30

I want to load multiple property files from various packages as ResourceBundle. Can I achieve that in Java

4条回答
  •  刺人心
    刺人心 (楼主)
    2021-02-06 15:31

    Here is my implementation:

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Enumeration;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Locale;
    import java.util.Map;
    import java.util.ResourceBundle;
    
    public class CombinedResourceBundle extends ResourceBundle
    {
        private Map combinedResources = new HashMap<>();
        private List bundleNames;
        private Locale locale;
        private Control control;
    
        public CombinedResourceBundle(List bundleNames, Locale locale, Control control)
        {
            this.bundleNames = bundleNames;
            this.locale = locale;
            this.control = control;
        }
    
        public void load()
        {
            bundleNames.forEach(bundleName ->
            {
                ResourceBundle bundle = ResourceBundle.getBundle(bundleName, locale, control);
                Enumeration keysEnumeration = bundle.getKeys();
                ArrayList keysList = Collections.list(keysEnumeration);
                keysList.forEach(key -> combinedResources.put(key, bundle.getString(key)));
            });
        }
    
        @Override
        public Object handleGetObject(String key)
        {
            return combinedResources.get(key);
        }
    
        @Override
        public Enumeration getKeys()
        {
            return Collections.enumeration(combinedResources.keySet());
        }
    }
    

提交回复
热议问题