亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Java枚舉類學(xué)習(xí)到進(jìn)階

Juven / 3380人閱讀

摘要:枚舉是聲明一組命名的常數(shù),當(dāng)一個(gè)變量有幾種可能的取值時(shí),可以將它定義為枚舉類型。注意枚舉只是枚舉類型,不能夠賦值操作。

枚舉類型是Java 5中新增特性的一部分,它是一種特殊的數(shù)據(jù)類型,之所以特殊是因?yàn)樗仁且环N類(class)類型卻又比類類型多了些特殊的約束,但是這些約束的存在也造就了枚舉類型的簡(jiǎn)潔性、安全性以及便捷性。
△有的地方還沒有學(xué)的透徹,之后會(huì)繼續(xù)學(xué)習(xí)修改更新本文章
1.枚舉類學(xué)習(xí) 1.1 定義枚舉類

枚舉類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口,使用enum定義的枚舉類默認(rèn)繼承了java.lang.Enum類,而不是默認(rèn)繼承Object類,因此枚舉類不能顯示繼承其他父類。其中java.lang.Enum類實(shí)現(xiàn)了java.lang.Serializable和java.lang.Comparable兩個(gè)接口。

使用enum定義、非抽象的枚舉類默認(rèn)會(huì)使用final修飾,因此枚舉類不能派生子類。

枚舉類的構(gòu)造器只能使用private訪問控制符,如果省略了構(gòu)造器的訪問控制符,則默認(rèn)使用private修飾;如果強(qiáng)制指定訪問控制符,則只能指定private修飾符。

枚舉類的所有實(shí)例必須在枚舉類的第一行顯式列出,否則這個(gè)枚舉類永遠(yuǎn)都不能產(chǎn)生實(shí)例。列出這些實(shí)例時(shí),系統(tǒng)會(huì)自動(dòng)添加public static final 修飾,無須程序員顯式添加。

枚舉類默認(rèn)提供了一個(gè)values()方法,該方法可以很方便地遍歷所有的枚舉值。

如下定義周一到周日的常量

//Day.class
//枚舉類型,使用關(guān)鍵字enum
enum Day {
    MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

相當(dāng)簡(jiǎn)潔,在定義枚舉類型時(shí)我們使用的關(guān)鍵字是enum,與class關(guān)鍵字類似,只不過前者是定義枚舉類型,后者是定義類類型。

1.2 枚舉類的實(shí)現(xiàn)原理

我們大概了解了枚舉類型的定義與簡(jiǎn)單使用后,現(xiàn)在有必要來了解一下枚舉類型的基本實(shí)現(xiàn)原理。實(shí)際上在使用關(guān)鍵字enum創(chuàng)建枚舉類型并編譯后,編譯器會(huì)為我們生成一個(gè)相關(guān)的類,這個(gè)類繼承了Java API中的java.lang.Enum類,也就是說通過關(guān)鍵字enum創(chuàng)建枚舉類型在編譯后事實(shí)上也是一個(gè)類類型而且該類繼承自java.lang.Enum類。

查看反編譯Day.class文件:

//反編譯Day.class
final class Day extends Enum
{
    //編譯器為我們添加的靜態(tài)的values()方法
    public static Day[] values()
    {
        return (Day[])$VALUES.clone();
    }
    //編譯器為我們添加的靜態(tài)的valueOf()方法,注意間接調(diào)用了Enum也類的valueOf方法
    public static Day valueOf(String s)
    {
        return (Day)Enum.valueOf(com/zejian/enumdemo/Day, s);
    }
    //私有構(gòu)造函數(shù)
    private Day(String s, int i)
    {
        super(s, i);
    }
     //前面定義的7種枚舉實(shí)例
    public static final Day MONDAY;
    public static final Day TUESDAY;
    public static final Day WEDNESDAY;
    public static final Day THURSDAY;
    public static final Day FRIDAY;
    public static final Day SATURDAY;
    public static final Day SUNDAY;
    private static final Day $VALUES[];

    static 
    {    
        //實(shí)例化枚舉實(shí)例
        MONDAY = new Day("MONDAY", 0);
        TUESDAY = new Day("TUESDAY", 1);
        WEDNESDAY = new Day("WEDNESDAY", 2);
        THURSDAY = new Day("THURSDAY", 3);
        FRIDAY = new Day("FRIDAY", 4);
        SATURDAY = new Day("SATURDAY", 5);
        SUNDAY = new Day("SUNDAY", 6);
        $VALUES = (new Day[] {
            MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
        });
    }
}

①?gòu)姆淳幾g的代碼可以看出編譯器確實(shí)幫助我們生成了一個(gè)Day類(注意該類是final類型的,將無法被繼承)而且該類繼承自java.lang.Enum類,該類是一個(gè)抽象類(稍后我們會(huì)分析該類中的主要方法)。

②除此之外,編譯器還幫助我們生成了7個(gè)Day類型的實(shí)例對(duì)象分別對(duì)應(yīng)枚舉中定義的7個(gè)日期,這也充分說明了我們前面使用關(guān)鍵字enum定義的Day類型中的每種日期枚舉常量也是實(shí)實(shí)在在的Day實(shí)例對(duì)象,只不過代表的內(nèi)容不一樣而已。注意編譯器還為我們生成了兩個(gè)靜態(tài)方法,分別是values()和 valueOf()。

③到此我們也就明白了,使用關(guān)鍵字enum定義的枚舉類型,在編譯期后,也將轉(zhuǎn)換成為一個(gè)實(shí)實(shí)在在的類,而在該類中,會(huì)存在每個(gè)在枚舉類型中定義好變量的對(duì)應(yīng)實(shí)例對(duì)象,如上述的MONDAY枚舉類型對(duì)應(yīng)public static final Day MONDAY;,同時(shí)編譯器會(huì)為該類創(chuàng)建兩個(gè)方法,分別是values()和valueOf()。到此相信我們對(duì)枚舉的實(shí)現(xiàn)原理也比較清晰。下面我們深入了解一下java.lang.Enum類以及values()和valueOf()的用途。

1.3 枚舉的常見方法

2.枚舉類使用 2.1常量

系統(tǒng)里實(shí)現(xiàn)常量的三種方式接口常量、類常量、枚舉常量

2.1.1接口常量

如java的swing里有一個(gè)SwingConstant:

public interface SwingConstants {

        /** 
         * The central position in an area. Used for
         * both compass-direction constants (NORTH, etc.)
         * and box-orientation constants (TOP, etc.).
         */
        public static final int CENTER  = 0;

        // 
        // Box-orientation constant used to specify locations in a box.
        //
        /** 
         * Box-orientation constant used to specify the top of a box.
         */
        public static final int TOP     = 1;
        /** 
         * Box-orientation constant used to specify the left side of a box.
         */
        public static final int LEFT    = 2;
       
       //。。。省略其他代碼
   }
2.1.2類常量

寫法(1)利弊:用到 DefaultValues.DEFAULT_AP 的含義,必須看類里的注釋,知道他表示中心。如果常量很多的話,把所有的常量都放在這一個(gè)接口里邊,這種方式感覺也不是很友好。

/**
 * 系統(tǒng)默認(rèn)值
 *
 */
public class DefaultValues {

    /**
     * 默認(rèn)密碼
     */
    public static final String DEFAULT_PASSWORD = "000000";
    /**
     * 默認(rèn)用戶類型
     */
    public static final String DEFAULT_USER_TYPE = UserType.NormalUser.value();    
    /**
     * 默認(rèn)獲取api名稱
     */
    public static final String DEFAULT_API = "api";
    
    /**
     * 默認(rèn)系統(tǒng)字符編碼
     */
    public static final String DEFAULT_ENCODING = "UTF-8";
    
    /**集群規(guī)模*/
    public static final  long CLUSTER_SIZE = 1000;
}

寫法(2)利弊:公司的接口常量是在接口里定義靜態(tài)內(nèi)部類,他可以把不同的功能的常量類進(jìn)一步分類。把不同功能的常量放在了接口的內(nèi)部類里,通過不同的內(nèi)部類可以清楚的知道一個(gè)常量的含義。

public class Constants {
    public static class MimeType{
        public static final String BIN = "application/octet-stream";
        public static final String CSS = "text/css";
        public static final String DOC = "application/msword";
        public static final String DOCX = "";
        public static final String EXE = "application/octet-stream";
        public static final String GTAR = "application/x-gtar";
        public static final String GZ = "application/x-gzip";
        public static final String HTM = "text/html;charset=utf-8";
        public static final String ICO = "image/x-icon";
        public static final String JPEG = "image/jpeg";
        public static final String JPG = "image/jpeg";
        public static final String JS = "application/x-javascript;charset=utf-8";
        public static final String JSON = "application/json;charset=utf-8";
        public static final String FORM = "application/x-www-form-urlencoded; charset=UTF-8";
        public static final String MULTIPART = "multipart/form-data; charset=UTF-8";
        public static final String MHT = "message/rfc822";
        public static final String MHTML = "message/rfc822";
        public static final String MOV = "video/quicktime";
        public static final String MP3 = "audio/mpeg";
        public static final String MPE = "video/mpeg";
        public static final String MPEG = "video/mpeg";
        public static final String MPG = "video/mpeg";
        public static final String PDF = "application/pdf";
        public static final String PPT = "application/vnd.ms-powerpoint";
        public static final String RTF = "application/rtf";
        public static final String SWF = "application/x-shockwave-flash";
        public static final String TAR = "application/x-tar";
        public static final String TXT = "text/plain;charset=utf-8";
        public static final String WAV = "audio/x-wav";
        public static final String XML = "text/xml;charset=utf-8";
        public static final String ZIP = "application/zip";
        
    }
    
    public static class DataState{
        public static final String FLAG_REMOVE = "Y";
        public static final String FLAG_NORMAL = "N";
    }
    
    /**
     * 應(yīng)用服務(wù)器實(shí)例運(yùn)行狀態(tài)
     */
    public static class ServerASInstanceState{
        public static final int RUNNING = 1;
        public static final int SHUT_OFF = 2;
    }
    /**
     * WebServices接口分析
     */
    public static class WebServicesType{
        /**先接收數(shù)據(jù),在返回接口情況的接口 **/ 
        public static final String IN_OUT = "IO";
        /**先發(fā)數(shù)據(jù)請(qǐng)求,后返回?cái)?shù)據(jù)的接口 **/ 
        public static final String OUT_IN = "OI";
        /**只發(fā)送數(shù)據(jù)的接口**/ 
        public static final String OUT= "O";
        /**只接收數(shù)據(jù)的接口 **/ 
        public static final String IN = "I";
    }
    
    /**
     * 任務(wù)調(diào)度使用
     */
    public static class TaskScheduling{
        /**任務(wù)ID **/ 
        public static final String TASK_ID = "taskID";
        /**任務(wù)URL **/ 
        public static final String TASK_URI = "taskURI";
        /**任務(wù)URL **/ 
        public static final String TASK_NAME = "taskName";
        /**任務(wù)目標(biāo)服務(wù)器IP **/ 
        public static final String TASK_SERVER_IP = "taskServerIp";
        /**任務(wù)目標(biāo)服務(wù)器IP **/ 
        public static final String TASK_SERVER_PORT = "taskServerPort";
        
        /**任務(wù)狀態(tài)啟用**/
        public static final int TASK_ENABLED = 1;
        
        /**任務(wù)狀態(tài)禁用**/
        public static final int TASK_DISABLE = 0;
        
        /**每年任務(wù)**/
        public static final int TYPE_EVERY_YEAR= 1;
        
        /**每月任務(wù)**/
        public static final int TYPE_EVERY_MONTH = 2;
        
        /**每日任務(wù)**/
        public static final int TYPE_EVERY_DAY = 3;
        
        /**每周任務(wù)**/
        public static final int TYPE_EVERY_WEEK = 4;
        
        /**單次任務(wù)**/
        public static final int TYPE_SINGLE = 5;
        
    }
}

雖然有了枚舉,可能是由于設(shè)計(jì)者習(xí)慣問題,還有很多人用的類常量, 定義了類常量,用一個(gè)Map來封裝常量對(duì)應(yīng)的信息,在static代碼塊里,類初始化的時(shí)候執(zhí)行一次put。用的時(shí)候 ResponseCode.RESP_INFO.get("DATABASE_EXCEPTION");就能取出響應(yīng)信息 由于項(xiàng)目是前后端分離,在接口文檔里需要寫上狀態(tài)碼,還得寫上狀態(tài)碼對(duì)應(yīng)的提示信息,而且我們的響應(yīng)類 RespInfo 有message屬性,就是保存常量類里狀態(tài)碼對(duì)應(yīng)的信息的。

public class ResponseCode {

    /** 系統(tǒng)處理正常 */
    public static final int SUCCESS_HEAD = 0;

    /** 系統(tǒng)處理未知異常 */
    public static final int EXCEPTION_HEAD = 1;

    /** JSON解析錯(cuò)誤 */
    public static final int JSON_RESOLVE = 2;

    /** 類型不匹配 */
    public static final int TRANSTYPE_NO = 3;

    /** Head - messageID未賦值 */
    public static final int HEAD_messageID = 4;

    /** Head - timeStamp未賦值 */
    public static final int HEAD_timeStamp = 5;

    /** Head - messengerID未賦值 */
    public static final int HEAD_messengerID = 6;

    /** Head - transactionType 未賦值 */
    public static final int HEAD_transactionType = 7;

    /** digest校驗(yàn)不通過 */
    public static final int HEAD_DIGEST = 8;
    
    /** src校驗(yàn)不通過 */
    public static final int HEAD_SRC_NULL = 10;
    
    /** 協(xié)議包含非法字符 */
    public static final int ILLEGAL_MESSAGE = 11;

    /** 數(shù)據(jù)庫(kù)異常 */
    public static final int DATABASE_EXCEPTION = 9;
    public static final Map RESP_INFO = new HashMap();

    static {
        // Head 相關(guān)
        RESP_INFO.put(SUCCESS_HEAD, "系統(tǒng)處理正常");
        RESP_INFO.put(EXCEPTION_HEAD, "系統(tǒng)處理未知異常");
        RESP_INFO.put(JSON_RESOLVE, "JSON解析錯(cuò)誤");
        RESP_INFO.put(TRANSTYPE_NO, "類型不匹配");
        RESP_INFO.put(HEAD_messageID, "messageID未賦值");
        RESP_INFO.put(HEAD_timeStamp, "timeStamp未賦值");
        RESP_INFO.put(HEAD_messengerID, "messengerID未賦值");
        RESP_INFO.put(HEAD_transactionType, "transactionType未賦值");
        RESP_INFO.put(HEAD_DIGEST, "digest校驗(yàn)不通過");
        RESP_INFO.put(DATABASE_EXCEPTION, "數(shù)據(jù)庫(kù)異常");
        RESP_INFO.put(HEAD_SRC_NULL, "src未賦值");
        RESP_INFO.put(ILLEGAL_MESSAGE, "協(xié)議包含非法字符");
        
    }
}
2.1.3枚舉常量

所有的枚舉類都是Enum類的子類,就行Object類一樣,只是沒有寫出來,所以可以枚舉類可調(diào)用Enum的方法。注意是逗號(hào)分隔屬性,只有屬性后邊沒有方法的話,最后加不加分號(hào)都行。
寫法(1)

public enum StateType {
    /**
     * 成功返回狀態(tài)
     */
    OK(200,"OK"), 
    
    /**
     * 請(qǐng)求格式錯(cuò)誤
     */
    BAD_REQUEST(400,"bad request"),
    /**
     * 未授權(quán)
     */
    UNAUTHORIZED(401,"unauthorized"),
    /**
     * 沒有權(quán)限
     */
    FORBIDDEN(403,"forbidden"),
    
    /**
     * 請(qǐng)求的資源不存在
     */
    NOT_FOUND(404,"not found"),
    /**
     * 該http方法不被允許
     */
    NOT_ALLOWED(405,"method not allowed"),
    /**
     * 請(qǐng)求處理發(fā)送異常
     */
    PROCESSING_EXCEPTION(406,"Handling Exceptions"),
    /**
     * 
     * 請(qǐng)求處理未完成
     */
    PROCESSING_UNFINISHED(407,"To deal with unfinished"),
    
    /**
     * 登錄過期
     */
    BEOVERDUE(408,"Be overdue"),
    
    /**
     * 用戶未登錄
     */
    NOT_LOGIN(409,"Not logged in"),
    
    /**
     * 這個(gè)url對(duì)應(yīng)的資源現(xiàn)在不可用
     */
    GONE(410,"gone"),
    /**
     * 請(qǐng)求類型錯(cuò)誤
     */
    UNSUPPORTED_MEDIA_TYPE(415,"unsupported media type"),
    /**
     * 校驗(yàn)錯(cuò)誤時(shí)用
     */
    UNPROCESSABLE_ENTITY(422,"unprocessable entity"),
    /**
     * 請(qǐng)求過多
     */
    TOO_MANY_REQUEST(429,"too many request");

    private int code;
    private String value = null;

    private StateType(int code,String value) {
        this.code = code;
        this.value = value;
    }

    public String value() {
        return this.value;
    }

    public int getCode() {
        return code;
    }

    public static Boolean isValidateStateType(String... stateType) {
        for (int i = 0; i < stateType.length; i++) {
            StateType [] value = StateType.values();
            boolean falg = false;
            for(StateType type : value) {
                if(type.value.equals(stateType[i])) {
                    falg = true;
                }
                
            }
            if(!falg) {
                return falg;
            }
        }
        return true;
    }
}

/*使用*/
public static void main(String[] args) {
    System.out.println("狀態(tài)碼:"+StateType.getCode());
        System.out.println("錯(cuò)誤信息:"+StateType.getValue());
}

寫法(2)

public enum Level {
    /**
     * 第一層
     */
    One(1),
    /**
     * 第二層 
     */
    Two(2),
    /**
     * 第三層
     */
    Three(3),
    /**
     * 第四層
     */
    Four(4),
    /**
     * 第五層
     */
    Five(5);
    
    private int value;
    
    Level(int value) {
        this.value = value;
    }
    
    public int value() {
        return this.value;
    }
    
    public static Boolean isValidateLevel(int level) {
        Level [] value = Level.values();
        boolean falg = false;
        for (Level pl : value){
            if(pl.value == level){
                falg = true;
            }
        }
        return falg;
    }
}

/*使用*/
public static void main(String[] args) {
    System.out.println("樓層:"+Level.Three);
}
2.2 switch結(jié)合枚舉類

JDK1.6之前的switch語句只支持int,char,enum類型,使用枚舉,能讓我們的代碼可讀性更強(qiáng)。

枚舉是聲明一組命名的常數(shù),當(dāng)一個(gè)變量有幾種可能的取值時(shí),可以將它定義為枚舉類型。枚舉是將變量的值一一列出來,變量的值只局限于列舉出來的值的范圍內(nèi)。

△注意:枚舉只是枚舉類型,不能夠賦值操作。如下:GREEN默認(rèn)值為0,但是GREEN不能=0,因?yàn)閿?shù)據(jù)類型不一樣。枚舉中變量未直接賦值,默認(rèn)等于前一個(gè)變量值加一,起始值默認(rèn)為0。

enum Signal { 
 GREEN, YELLOW, RED 
} 
public class TrafficLight { 
 Signal color = Signal.RED; 
 public void change() { 
  switch (color) { 
  case RED: 
   color = Signal.GREEN; 
   break; 
  case YELLOW: 
   color = Signal.RED; 
   break; 
  case GREEN: 
   color = Signal.YELLOW; 
   break; 
  } 
 } 
} 
2.3 向枚舉中添加新的方法

如果打算自定義自己的方法,那么必須在enum實(shí)例序列的最后添加一個(gè)分號(hào)(“;”),java中要求必須先定義java實(shí)例。

public enum ChannelEnum {

    MSG_CENTER_CHANNEL1("msg_center_channel1"),
    MSG_CENTER_CHANNEL("msg_center_channel");

    private String channel = null;

    private ChannelEnum(String channel) {
        this.channel = channel;
    }

    public String getChannel() {
        return this.channel;
    }
}
2.4 實(shí)現(xiàn)接口

所有的枚舉都繼承自java.lang.Enum類。由于Java 不支持多繼承,所以枚舉對(duì)象不能再繼承其他類。

如果由枚舉類來實(shí)現(xiàn)接口里的方法,則每個(gè)枚舉值在調(diào)用該方法時(shí)都有相同的行為方式(因?yàn)榉椒w完全一樣)。如果需要每個(gè)枚舉值在調(diào)用該方法時(shí)呈現(xiàn)出不同的行為方式,則可以讓每個(gè)枚舉值分別來實(shí)現(xiàn)該方法,每個(gè)枚舉值提供不同的實(shí)現(xiàn)方式,從而讓不同的枚舉值調(diào)用該方法時(shí)具有不同的行為方式。

public interface Behaviour {  
    void print();  
    String getInfo();  
}  
public enum Color implements Behaviour{  
    RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);  
    // 成員變量  
    private String name;  
    private int index;  
    // 構(gòu)造方法  
    private Color(String name, int index) {  
        this.name = name;  
        this.index = index;  
    }  
//接口方法  
    @Override  
    public String getInfo() {  
        return this.name;  
    }  
    //接口方法  
    @Override  
    public void print() {  
        System.out.println(this.index+":"+this.name);  
    }  
}
2.5 使用接口組織枚舉
public interface Food {
    enum Coffee implements Food{  
        BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO  
    }  
    enum Dessert implements Food{  
        FRUIT, CAKE, GELATO  
    }  
}

資料原文地址:

① https://blog.csdn.net/javazej...

② https://blog.csdn.net/qq_2709...

③ https://www.cnblogs.com/lihao...

④ https://segmentfault.com/a/11...

掘金地址:https://juejin.im/post/5c1313...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/72682.html

相關(guān)文章

  • 如何從JavaScript跨越TypeScript [基礎(chǔ)進(jìn)階知識(shí)點(diǎn)]

    摘要:接口前端程序員很難理解的點(diǎn)也是一門面向?qū)ο蟮恼Z言,但是中它是基于原型實(shí)現(xiàn)的,中使用了類,這樣會(huì)更清晰的體會(huì)到面向?qū)ο筮@一說法,但是實(shí)際在中的面向?qū)ο蟾油暾?,它跟這些語言一樣,通過接口和類去完整的面向?qū)ο缶幊獭? 從入門到放棄的java 初中時(shí)自學(xué)過JAVA,學(xué)了大概一個(gè)多月吧, 學(xué)了一個(gè)多月,看視頻這些,后面放棄了編程。 依稀記得,那段日子極度苦逼,我想如果當(dāng)時(shí)是學(xué)javaScrip...

    wangym 評(píng)論0 收藏0
  • 如何從JavaScript跨越TypeScript [基礎(chǔ)進(jìn)階知識(shí)點(diǎn)]

    摘要:接口前端程序員很難理解的點(diǎn)也是一門面向?qū)ο蟮恼Z言,但是中它是基于原型實(shí)現(xiàn)的,中使用了類,這樣會(huì)更清晰的體會(huì)到面向?qū)ο筮@一說法,但是實(shí)際在中的面向?qū)ο蟾油暾?,它跟這些語言一樣,通過接口和類去完整的面向?qū)ο缶幊獭? 從入門到放棄的java 初中時(shí)自學(xué)過JAVA,學(xué)了大概一個(gè)多月吧, 學(xué)了一個(gè)多月,看視頻這些,后面放棄了編程。 依稀記得,那段日子極度苦逼,我想如果當(dāng)時(shí)是學(xué)javaScrip...

    zhunjiee 評(píng)論0 收藏0
  • 你和阿里資深架構(gòu)師之間,差的不僅僅是年齡(進(jìn)階必看)

    摘要:導(dǎo)讀閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類知識(shí)點(diǎn),你也可以按照文章中所列的知識(shí)體系對(duì)比自身,對(duì)自己進(jìn)行查漏補(bǔ)缺,覺得本文對(duì)你有幫助的話,可以點(diǎn)贊關(guān)注一下。目錄一基礎(chǔ)篇二進(jìn)階篇三高級(jí)篇四架構(gòu)篇五擴(kuò) 導(dǎo)讀:閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類知識(shí)點(diǎn),你也可以按照文章中所列的知識(shí)體系對(duì)比自身,對(duì)自己...

    huaixiaoz 評(píng)論0 收藏0
  • Java進(jìn)階3 —— 和接口設(shè)計(jì)原則

    摘要:首當(dāng)其沖的便是接口中的每個(gè)聲明必須是即便不指定也是,并且不能設(shè)置為非,詳細(xì)規(guī)則可參考可見性部分介紹。函數(shù)式接口有著不同的場(chǎng)景,并被認(rèn)為是對(duì)編程語言的一種強(qiáng)大的擴(kuò)展。抽象類與中的接口有些類似,與中支持默認(rèn)方法的接口更為相像。 原文鏈接:http://www.javacodegeeks.com/2015/09/how-to-design-classes-and-interfaces.htm...

    lauren_liuling 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<