学习心得

                注解和反射的学习中,看出来反射也可以创建对象,在一个注解里可以写方法,加一些东西。实现类里面直接写个注解,就直接加进去了。

 

 

                                                                      心情😅😅

                                                    英文课啊这是,好好学英语有大用。反射注解里面存在的单词好多,但是有注解真的会很清晰

                                                                                                          掌 握 情 况:多读多看才能记住

注解和反射:

注解:Annotation ,java标注,JDK5引入的一种机制

Java中类,方法,变量,参数,包都可以被标注。

元注解:专门给注解加的注解

我们发现注解中可以有方法,

1.定义方法的格式:比如 String name();

2.可以有默认值,也可以没有,如果没有默认值,必须在填写的时候对应的值。如果需要有默认值,使用default 指定默认值。

3.如果想在使用的时候不指定具体的名字。如果不学习反射,注解没有用!!

 

在Java的整个的注解体系中,有三个非常重要的主干类

1.Annotation :接口,定义一些常用的方法

2.ElementType:枚举,指定注解类型,意思就是我的注解要用到哪里。

3.RetentionPolicy:枚举。它用来指定注解的策略,不同类型的策略指定的注解的作用域不同。

  • (1)SOURCE:注解仅存在于编译期处理期间,编译器处理完之后,这个注解就没用了。
  • (2)CLASS:注解在 . class文件中依然有效。
  • (3)RUNTIME:编译期是不起作用的,只有在运行期才由JVM读取。

Java自带的注解:

10个,四个注解在Java.lang.annotation。六个注解在java.lang

作用在代码上的注解:

1.@Override:检查该方法是否是重写方法。如果返现其父类,或者是引用的接口中没有该方法,会报错

2.@Deprecated:标记的方法,过时的方法。

3.@SuppressWarnings:编译期去忽略警告

4.@@SafeVarargs,JDK7支持忽略任何使用参数为泛型变量的方法或构造器产生的警告。

5.@FunctionalInterface:JDK8开始支持,表示一个接口为函数式接口

6.@Repeatable:JDK8之后开始支持的,标识某个注解可以在同一个声明使用多次。

  • all:忽略所有警告
  • boxing:忽略装箱、拆箱警告
  • rawtypes:使用生成时没有指定数据类型
  • unchecked:忽略没有进行类型检查操作的警告
  • unused:忽略没有使用的警告

元注解:

1.@Retention:表示这个注解作用域

2.@Documented:标记这个注解是否包含在用户文档中

3.@Target:这个注解可以修饰哪些信息,类,方法,常量一大堆大写

4.@Iherited:如果一个类用上了这个注解,它的子类也会继承

反射:

Class类

public class Ch02 {


    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        // 获取类对象
        // 1.直接使用类名.class
        Class<Dog> clazz = Dog.class;


        // 对类对象操作
        // 获取类的名字
        System.out.println(clazz.getName());
        // 获取类的加载器
        ClassLoader classLoader = clazz.getClassLoader();
        System.out.println(classLoader);
        // 获取资源
        URL resource = clazz.getResource("");
        // 获取父类
        System.out.println(clazz.getSuperclass());
        // 判断一个类是不是接口,数组
        System.out.println(clazz.isArray());
        System.out.println(clazz.isInterface());
        // 重点,使用class类对象实例化一个对象
        @SuppressWarnings("all")
        Dog dog = clazz.newInstance();
        // clazz.getDeclaredConstructor().newInstance();


        // 2.使用全类名
//        Class aClass = Class.forName("com.jsoft.morning.Dog");
        // 3.使用对象
//        Dog dog = new Dog();
//        Class aClass1 = dog.getClass();

Dog

@Bean
public class Dog {


    public String type;
    private String name;
    private String color;


    public Dog() {


    }


    private Dog(String name){
        this.name = name;
    }


    public Dog(String name, String color) {
        this.name = name;
        this.color = color;
    }


    public String getType() {
        return type;
    }


    public void setType(String type) {
        this.type = type;
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    public String getColor() {
        return color;
    }


    public void setColor(String color) {
        this.color = color;
    }


    @MyAnnotation(value = 20,age=10)
    public void show(String str) {
        System.out.println("show方法..." + str);
    }


    public String info() {


        return "info方法";
    }


    private void fun() {
        System.out.println("私有的fun方法

Bean    自己写的注解

import java.lang.annotation.*;


@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Bean {
}

      =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

     面试可能问的:

     数组的length和字符串的length()区别?     

     答:数组的lenth是数组的属性,字符串的length()是String的一个方法

     基本数据类型和包装器类型区别?      

     答:基本数据类型是有默认值的,int0 double0.0 boolean false..

     包装器类型默认值为null

     =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 

posted on 2022-08-10 18:49  骐琳  阅读(30)  评论(0)    收藏  举报

你点我就回上面去了ヾ(≧O≦)〃嗷~