Java教程

Java注解全面总结,有了这些中高端面试专题-大厂还会远吗

本文主要是介绍Java注解全面总结,有了这些中高端面试专题-大厂还会远吗,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
    boolean hasAnnotation = TestAnnotationMain.class.isAnnotationPresent(AnnotationTest.class);

    if (hasAnnotation) {

        AnnotationTest annotation = TestAnnotationMain.class.getAnnotation(AnnotationTest.class);

        System.out.println(annotation.name());

    }

}

}



![](https://upload-images.jianshu.io/upload_images/3012005-037c41da49c434e1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp)



如果我们想给一个类的属性进行赋值可以这么做  

1.创建一个注解如下



@Documented

@Retention(RetentionPolicy.RUNTIME)

public @interface AnnotationTest1 {

String value(); //value来定义

}



2.引用该主解



public class Test {

@AnnotationTest1(value = "小云") //引用注解进行赋值

public String name;

}



3.测试



public class TestAnnotation1Main {

public static void main(String[] args) {

    try {

        Field name = Test.class.getDeclaredField("name");//该该类的字段

        name.setAccessible(true); 

        AnnotationTest1 annotationTest1 = name.getAnnotation(AnnotationTest1.class);//获取该字段的注解

        if (annotationTest1 != null) {

            System.out.println(annotationTest1.value()); //输出值

        } 

    } catch (NoSuchFieldException e) {

        e.printStackTrace();

    }

}

}



> 获取方法上的注解类 如AnnotationTest2



@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

public @interface AnnotationTest2 {

 //todo无任何方法或者属性

}

public class Test {



    @AnnotationTest1(value = "小云")

    public String name;



    @AnnotationTest2 //目的获取该AnnotationTest2 

    public void fun() {

        System.out.println("方法执行");

    }

} 

```



获取



```

public class TestAnnotation1Main {

    public static void main(String[] args) {

        try {

            Field name = Test.class.getDeclaredField("name"); //获取该类的声明字段

            name.setAccessible(true);

            AnnotationTest1 annotationTest1 = name.getAnnotation(AnnotationTest1.class);//获取该字段的注解

            if (annotationTest1 != null) {

                System.out.println(annotationTest1.value()); //输出值

            }



            Method fun = Test.class.getDeclaredMethod("fun");

            if (fun != null) {

                Annotation[] annotations = fun.getAnnotations();

                for (int i = 0; i < annotations.length; i++) {

                    System.out.println(annotations[i].annotationType().getSimpleName());

                }

            }

        } catch (NoSuchFieldException | NoSuchMethodException e) {

            e.printStackTrace();

        }

    }

} 

```



举例



```

@Documented

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

public @interface MyAnnotation {

}



public class MyTest { //进行获取注解方法的全部数据

    @MyAnnotation

    public void mytestLoad() {

        System.out.println("测试加载");

    }

    @MyAnnotation

    public void mytestRequest() {

        System.out.println("测试请求");

    }

    @MyAnnotation

    public void mytestProgress() {

        System.out.println("测试进度");

    }

    @MyAnnotation

    public void mytestError() {

        System.out.println(1 );

    }

   ///该方法不执行

   public void mytestNoAnno(){

        System.out.println("没有注解的方法");

    }

}



public class TestMain {

    public static void main(String[] args) {

        MyTest myTest = new MyTest();

        Method[] methods = myTest.getClass().getDeclaredMethods();

        for (int i = 0; i < methods.length; i++) {

            Method method = methods[i];

            if (method.isAnnotationPresent(MyAnnotation.class)) {

                try {

                    method.setAccessible(true);

                    method.invoke(myTest, null);//调用该类的注解方法

                } catch (IllegalAccessException e) {

                    e.printStackTrace();

                } catch (InvocationTargetException e) {

                    e.printStackTrace();

                }

            }

        }

        System.out.println("==================输出完成!====================");

    }

} 

```



![](https://www.www.zyiz.net/i/ll/?i=img_convert/cff9431623e52f7a304f34d42aca7e46.png)



下载

==



[**Annotation案例代码下载**](

)



总结

==



我们在开发中长见的注解如下:



| 常用注解 | 解释 |

| --- | --- |

| @Override | 方法重写 |

| @SuppressWarnings | 提示警告 |


> **Java网盘:pan.baidu.com/s/1MtPP4d9Xy3qb7zrF4N8Qpg
> 提取码:2p8n**



# 总结

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

**请转发本文支持一下**

**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](

)**

![](https://www.www.zyiz.net/i/ll/?i=img_convert/02c18b75c2a584cdeecdc513d02b2912.png)

悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

**请转发本文支持一下**

**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](

)**

[外链图片转存中...(img-tbr9xqUM-1631409345785)]

![](https://www.www.zyiz.net/i/ll/?i=img_convert/b49693fb56c3efcdf2cdf7b3b5cfbca4.png)
这篇关于Java注解全面总结,有了这些中高端面试专题-大厂还会远吗的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!