JavaSE 枚舉和註解
一、枚舉
1 定義
在某些情況下,一個類的對象是有限而且固定的,例如季節類,只有4個對象。如果一個一個單例模式,代碼量太大,編譯成本高,故使用枚舉。
實現枚舉類語句注意:
- private修飾有參構造器
- 屬性使用private final修飾
- 把該類的所有實例都使用public static final來修飾
2 自實現枚舉類+實現接口
案例展示:(注意其中枚舉類的實現語句)
package com.enumdemo;
public class Demo01 {
public static void main(String[] args) {
Season spring = Season.SPRING; //此處返回一個Season對象
spring.showInfo();
Season spring1 = Season.SPRING;
//此處證明每次執行Season.SPRING獲得相同對象,也就意味着枚舉類中每個枚舉都是單例的
System.out.println(spring.equals(spring1));
spring.test();
}
}
enum Season implements ITest{
SPRING("春天","春暖花開"), //此處調用有參私有構造,並傳入參數
SUMMER("夏天","炎炎夏日"),
AUTUMN("秋天","秋高氣爽"),
WINTER("冬天","寒風凜冽");
private final String name;
private final String desc;
private Season(String name, String desc){
this.name = name;
this.desc = desc;
}
public void showInfo(){
System.out.println(this.name+": "+this.desc);
}
@Override
public void test() {
System.out.println("此處實現ITest接口的test方法");
}
}
interface ITest{ //定義接口
void test();
}
二、Annotation(註解)
1 Annotation概述
- Annotation就是代碼裏的特殊標記,這些標記可以在編譯,類加載,運行時被讀取,並執行相應的處理。通過使用Annotation,程序員可以在不改變原有邏輯的情況下,在源文件中嵌入一些補充信息。
- Annotation可以像修飾符一樣被使用,可用於修飾包,類,構造器,方法,成員變量,參數,局部變量的聲明,這些信息被保存在Annotation的“name=value”對中
- Annotation能被用來爲程序元素設置元數據
2 基本的Annotation
-
使用Annotation時要在其前面增加@符號,並把該Annotation當成一個修飾符使用,用於修飾它支持的程序元素。
-
三個基本的Annotation:
- @Override:限定重寫父類方法,該註釋只能用於方法
- @Deprecated:用於表示某個程序元素(類、方法等)已過時
- @SuppressWarnings:抑制編譯器警告
上述註解展示:
package com.annotation; import java.util.ArrayList; import java.util.List; public class Demo01 { public static void main(String[] args) { new TestB().test1(); //方法過時 @SuppressWarnings({"rawtypes","unused"}) //抑制警告,此時無泛型、未被使用均不出警告 List list = new ArrayList(); } } class TestA{ public void test(){ } } class TestB extends TestA{ @Override //註解表示方法重寫 public void test() { super.test(); } @Deprecated //註解表示方法過時 public void test1(){ System.out.println("DDD"); } }
3 自定義Annotation
- 定義新的Annotation類型使用@interface關鍵字
- Annotation的成員變量在Annotation定義中以無參數方法的形式來聲明。其方法名和返回值定義了該成員的名字和類型。
- 可以在定義Annotation的成員變量時爲其指定初始值,指定成員變量的初始值可以使用default關鍵字。
- 沒有成員定義的Annotation稱爲標記;包含成員變量的Annotation稱爲元數據Annotation。
package com.annotation;
import java.lang.annotation.*;
public class Demo02 {
}
class TestAA{
@TestAnn(id=100,desc="姓名")
String name;
}
//註解類
@Target(ElementType.FIELD)//這個註解類只能是給其他類的屬性做註解
@Retention(RetentionPolicy.RUNTIME)//定義註解的生命週期,此時爲整個運行週期
@Documented
@interface TestAnn{
public int id() default 0;
public String desc() default "";
}
寫在最後
"I am the vine; you are the branches. If you remain in me and I in you, you will bear much fruit; apart from me you can do nothing. "
To Demut!