<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 自定義注解 注解的本質就是接口. 注解的屬性名就是接口方法的方法名. 注解的屬性值就是接口方法的返回值. 如果一個注解里面只有一個 方法,并且方法名叫value ,那么屬性名可以省略不寫. ## 自定義注解 定義注解 ~~~ public @interface MyS1 { String value(); } ~~~ 使用注解,如果只有一個方法,方法名是value就可以不寫value. ~~~ @MyS1("hello") public void show() { System.out.println(""); } ~~~ ## 元注解 * @Target: 指定該注解可以使用的地方. * @Retention: ## 注解原理 自定義注解 ~~~ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; //標記該注解只能使用在方法上 @Target({ElementType.METHOD}) //指定注解的有效時期(源碼時期,編譯時期,運行時期) @Retention(RetentionPolicy.RUNTIME) public @interface MyS1 { String value(); } ~~~ 使用自定義注解 ~~~ public class main { public static void main(String[] args) throws Exception { //獲取所有方法,看看方法有沒有被注解修飾 Class clazz = Class.forName("main"); //注意,這里是完全限定名稱 //獲取所有方法 Method[] methods = clazz.getMethods(); //循環所有方法 for (Method method : methods) { //此方法只對運行時期有效,所以打印出來的結果都是false. 所以要對注解進行注解,可以對注解進行注解的注解被稱為元注解. boolean b = method.isAnnotationPresent(MyS1.class); System.out.println(method.getName() + ":" + b); if (b) { method.invoke(clazz.newInstance(), args); } } } @MyS1("hello") public void show1() { System.out.println("show1"); } public void show2() { System.out.println("show2"); } } ~~~ 結果 ``` main:false show1:true show1 show2:false wait:false wait:false wait:false equals:false toString:false hashCode:false getClass:false notify:false notifyAll:false ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看