Java Enum
解決之前遺留的問題之一:Java Enum的理解。
“最近在研究Shiro的過程中,碰到DefaultFilter的源碼,是enum形式的。之前沒見過這樣的寫法”。
public enum DefaultFilter {anon(AnonymousFilter.class),authc(FormAuthenticationFilter.class),authcBasic(BasicHttpAuthenticationFilter.class),logout(LogoutFilter.class),noSessionCreation(NoSessionCreationFilter.class),perms(PermissionsAuthorizationFilter.class),port(PortFilter.class),rest(HttpMethodPermissionFilter.class),roles(RolesAuthorizationFilter.class),ssl(SslFilter.class),user(UserFilter.class);private final Class<? extends Filter> filterClass;private DefaultFilter(Class<? extends Filter> filterClass) {this.filterClass = filterClass;}public Filter newInstance() {return (Filter) ClassUtils.newInstance(this.filterClass);}public Class<? extends Filter> getFilterClass() {return this.filterClass;}public static Map<String, Filter> createInstanceMap(FilterConfig config) {Map<String, Filter> filters = new LinkedHashMap<String, Filter>(values().length);for (DefaultFilter defaultFilter : values()) {Filter filter = defaultFilter.newInstance();if (config != null) {try {filter.init(config);} catch (ServletException e) {String msg = "Unable to correctly init default filter instance of type " +filter.getClass().getName();throw new IllegalStateException(msg, e);}}filters.put(defaultFilter.name(), filter);}return filters;} }?
相關博客:http://www.cnblogs.com/happyPawpaw/archive/2013/04/09/3009553.html
1.?enum本身無法再繼承
2. enum可視為class的一種
3. enum默認有valueOf(),values()方法,其實類似于類的.class,具體可能深究JVM
4. enum相等用==
5. Java enum在經過編譯后也會生成class文件,而且其經過反編譯之后生成的類實際上繼承了java.lang.Enum<E>
6.?enum的實例必須提前列舉!?enum無法用構造函數new,構造函數是private的
7. 既然enum不能實例化,那么enum中的public方法不能使用(除了列舉的現成的enum),只能使用public static的方法;
?
轉載于:https://www.cnblogs.com/hello-yz/p/5737134.html
總結
- 上一篇: zabbix监控-基本原理介绍
- 下一篇: 接口抽象类继承父类和子类