枚舉
1. 枚舉的兩種實現(xiàn)方式
1.1 自定義實現(xiàn)枚舉
- 將構(gòu)造器私有化
- 本類內(nèi)部創(chuàng)建一組對象
- 對外暴露對象
- 提供get方法府瞄,但是不要提供set方法要尔,因為枚舉對象值通常為只讀。
- 對枚舉對象/屬性使用final+static共同修飾镶蹋,實現(xiàn)底層優(yōu)化滤淳。
public class Enumeration02 {
public static void main(String[] args) {
System.out.println(Season.AUTUMN);
System.out.println(Season.SPRING);
}
}
//演示字定義枚舉實現(xiàn)
class Season {//類
private String name;
private String desc;//描述
//定義了四個對象, 固定.
public static final Season SPRING = new Season("春天", "溫暖");
public static final Season WINTER = new Season("冬天", "寒冷");
public static final Season AUTUMN = new Season("秋天", "涼爽");
public static final Season SUMMER = new Season("夏天", "炎熱");
//1. 將構(gòu)造器私有化,目的防止 直接 new
//2. 去掉 setXxx 方法, 防止屬性被修改
//3. 在 Season 內(nèi)部,直接創(chuàng)建固定的對象
//4. 優(yōu)化琉苇,可以加入 final 修飾符
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';
}
}
1.2 enum關(guān)鍵字實現(xiàn)枚舉類
- 將構(gòu)造器私有化
- 使用enum代替class修飾類
- 其他不變嘲玫,但是創(chuàng)建的一組對象放到最前面且多個對象用逗號隔開,最后;結(jié)尾并扇。
public class Enumeration02 {
public static void main(String[] args) {
System.out.println(Season.AUTUMN);
System.out.println(Season.SPRING);
}
}
//演示字定義枚舉實現(xiàn)
enum Season {//類
SPRING("春天", "溫暖"),WINTER("冬天", "寒冷"),AUTUMN("秋天", "涼爽"),SUMMER("夏天", "炎熱");
private String name;
private String desc;//描述
//1. 將構(gòu)造器私有化,目的防止 直接 new
//2. 去掉 setXxx 方法, 防止屬性被修改
//3. 在 Season 內(nèi)部,直接創(chuàng)建固定的對象
//4. 優(yōu)化抡诞,可以加入 final 修飾符
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';
}
}
使用enum關(guān)鍵字后穷蛹,就不能再繼承其他類了土陪,因為enum會隱式繼承Enum類,而Java是單繼承機制
枚舉類和普通類一樣肴熏,可以實現(xiàn)接口鬼雀。
2.注解(Annotation)
注解也被稱為元數(shù)據(jù),用于修飾解釋包蛙吏、類源哩、方法、屬性鸦做、構(gòu)造器励烦、局部變量等數(shù)據(jù)信息
作用:javaSE中,注解的使用目的比較簡單泼诱,例如標(biāo)記過時的功能坛掠,忽略警告。
javaEE中治筒,注解占據(jù)了更重要的角色屉栓,例如用來配置應(yīng)用程序的任何切面,代替javaEE舊版中所遺留的繁冗代碼和XML配置等
2.1 三個基本的Annotation
@Override注解
@Override:限定某個方法耸袜,是重寫父類方法友多,該注解只能用于方法
@Target是修飾注解的注解,稱為元注解堤框。
@Deprecated
- 用于表示某個程序元素(類夷陋、方法等)已過時
- 可以修飾方法,類胰锌,字段骗绕,包,參數(shù)等等
@SuppressWarnings
抑制編譯器警告
//1. 當(dāng)我們不希望看到這些警告的時候资昧,可以使用 SuppressWarnings 注解來抑制警告信息
//2. 在{""} 中酬土,可以寫入你希望抑制(不顯示)警告信息
//3. 可以指定的警告類型有
// all,抑制所有警告
// boxing格带,抑制與封裝/拆裝作業(yè)相關(guān)的警告
// //cast撤缴,抑制與強制轉(zhuǎn)型作業(yè)相關(guān)的警告
// //dep-ann,抑制與淘汰注釋相關(guān)的警告
// //deprecation叽唱,抑制與淘汰的相關(guān)警告
// //fallthrough屈呕,抑制與 switch 陳述式中遺漏 break 相關(guān)的警告
// //finally,抑制與未傳回 finally 區(qū)塊相關(guān)的警告
// //hiding棺亭,抑制與隱藏變數(shù)的區(qū)域變數(shù)相關(guān)的警告
// //incomplete-switch虎眨,抑制與 switch 陳述式(enum case)中遺漏項目相關(guān)的警告
// //javadoc,抑制與 javadoc 相關(guān)的警告
// //nls,抑制與非 nls 字串文字相關(guān)的警告
// //null嗽桩,抑制與空值分析相關(guān)的警告
// //rawtypes岳守,抑制與使用 raw 類型相關(guān)的警告
// //resource,抑制與使用 Closeable 類型的資源相關(guān)的警告
// //restriction碌冶,抑制與使用不建議或禁止參照相關(guān)的警告
// //serial湿痢,抑制與可序列化的類別遺漏 serialVersionUID 欄位相關(guān)的警告
// //static-access,抑制與靜態(tài)存取不正確相關(guān)的警告
// //static-method扑庞,抑制與可能宣告為 static 的方法相關(guān)的警告
// //super譬重,抑制與置換方法相關(guān)但不含 super 呼叫的警告
// //synthetic-access,抑制與內(nèi)部類別的存取未最佳化相關(guān)的警告
// //sync-override罐氨,抑制因為置換同步方法而遺漏同步化的警告
// //unchecked臀规,抑制與未檢查的作業(yè)相關(guān)的警告
// //unqualified-field-access,抑制與欄位存取不合格相關(guān)的警告
// //unused岂昭,抑制與未用的程式碼及停用的程式碼相關(guān)的警告
@SuppressWarning 作用范圍是和放置的位置相關(guān)
比如 @SuppressWarnings 放置在 main 方法以现,那么抑制警告的范圍就是 main