日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java】灵活使用自定义注解和反射

發布時間:2025/3/15 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java】灵活使用自定义注解和反射 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

完整代碼

import java.lang.annotation.*; import java.lang.reflect.Method;@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented @interface DebugTime{boolean value() default true;long timeout() default 100;String msg();int[] other() default {}; }class FibTestClass {@DebugTime(timeout=10, msg="Time Out Of Range!", other={1, 2, 3})public long fib(int n) {return (n == 0 || n==1) ? 1 : (fib(n-1)+fib(n-2));} }public class DebugAnnotationTest {public static void main(String[] args) throws NoSuchMethodException {FibTestClass obj = new FibTestClass();Class<?> clazz = obj.getClass();// show all annotationsfor(Method method : clazz.getDeclaredMethods()){System.out.println(method);for(Annotation annotation : method.getAnnotations()){System.out.println(annotation.annotationType().getName());}}Method method = clazz.getMethod("fib", int.class);System.out.println(method);if( method.isAnnotationPresent(DebugTime.class)){DebugTime debug = method.getAnnotation(DebugTime.class);// get properties of the annotationboolean requireDebug = debug.value();long timeout = debug.timeout();if(requireDebug){long time1 = System.currentTimeMillis();double fib = obj.fib(40);long time2 = System.currentTimeMillis();long time = time2-time1;System.out.println("計算結果是:" + fib);System.out.println("time used: "+time);if(time > timeout){System.err.println(debug.msg());}}}} }

測試結果

public long FibTestClass.fib(int) main.DebugTime public long FibTestClass.fib(int) 計算結果是:1.65580141E8 time used: 687 Time Out Of Range!

總結

以上是生活随笔為你收集整理的【Java】灵活使用自定义注解和反射的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。